我有一个CPU密集型任务,我希望它使用更少的CPU并占用更多时间.
我在启动时将大量SCNNodes加载到场景中.它占用了大量内存,我希望它以安全的速度工作,而不是滞后我的系统或可能导致它崩溃.
这是我用来加载节点的代码.
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^(void){
NSLog(@"Start Loading Level");
SCNNode *cameraNode = [SCNNode node];
cameraNode.camera = [SCNCamera camera];
cameraNode.camera.zFar = 5000;
cameraNode.position = SCNVector3Make(0, 3000, 0);
cameraNode.rotation = SCNVector4Make(1, 0, 0, -M_PI_2);
[scene.rootNode addChildNode:cameraNode];
for (int i = 0; i < 100000; i++)
{
int side = 3000;
SCNNode *node = [SCNNode node];
node.geometry = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0];
node.position = SCNVector3Make(arc4random_uniform(side) - side / 2.0,
0,
arc4random_uniform(side) - side / 2.0);
[scene.rootNode addChildNode:node];
}
dispatch_async(dispatch_get_main_queue(), ^(void){
NSLog(@"Finished"); …Run Code Online (Sandbox Code Playgroud) 我有一个盒子节点
_boxNode = [SCNNode node];
_boxNode.geometry = [SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0];
_boxNode.position = SCNVector3Make(0, 0, -2);
[scene.rootNode addChildNode:_boxNode];
Run Code Online (Sandbox Code Playgroud)
我有一条路
CGPathRef path = CGPathCreateWithEllipseInRect(CGRectMake(-2, -2, 4, 4), nil);
Run Code Online (Sandbox Code Playgroud)
我希望我的箱子沿着我的路径前行一次.
我如何在SceneKit中执行此操作?
我想制作一个看起来像的方法
[_boxNode runAction:[SCNAction moveAlongPath:path forDuration:duration]];
Run Code Online (Sandbox Code Playgroud) 如何在我的.yml中为has_many和belongs_to变量创建样本数据.
这是将这些文件添加到终端中的简单rails new lab命令的示例.我真的不知道如何用英语解释这个.但我希望我的代码能够显示足够的细节来解决问题.
man.rb
class Man < ActiveRecord::Base
attr_accessible :name
has_many :items
end
Run Code Online (Sandbox Code Playgroud)
item.rb的
class Item < ActiveRecord::Base
attr_accessible :name
belongs_to :man
end
Run Code Online (Sandbox Code Playgroud)
men.yml
one:
name: ManOne
#items: one, two
two:
name: ManTwo
#items: one, two
Run Code Online (Sandbox Code Playgroud)
items.yml
one:
name: ItemOne
two:
name: ItemTwo
Run Code Online (Sandbox Code Playgroud)
man_test.rb
require 'test_helper'
class ManTest < ActiveSupport::TestCase
def test_man
Man.all.each do |man|
puts man.name.to_s + ": " + man.items.to_s
end
assert true
end
end
Run Code Online (Sandbox Code Playgroud) 以下是摘要:
libMobileGestalt MobileGestalt.c:890:此平台不支持MGIsDeviceOneOfType
。
我已经将应用程序从Swift 2更新到4.2。大多数错误修复只是在更新语法。
任何有助于解决此问题的见解将不胜感激!
private func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: Any]?) -> Bool {
setConstants()
window = UIWindow(frame: UIScreen.main.bounds)
window!.rootViewController = RootViewController.sharedInstance
window!.makeKeyAndVisible()
preloadKeyboard()
return true
}
Run Code Online (Sandbox Code Playgroud)
RootViewController的共享实例:
static let sharedInstance = RootViewController(nibName: "RootViewController", bundle: nil)
Run Code Online (Sandbox Code Playgroud)
为什么这不是重复的问题:
目前,当我将我的PromiseKit从Swift 2更新到Swift 4时遇到了问题。我的许多Promise都将这个问题从NSDictionary退还给Guarantee Void。我不明白为什么会出现这个问题。如果有人可以向我解释,将不胜感激!
func getPlayerGameLog(sportName: String) -> Promise<NSArray> {
let team = (self as? PlayerWithPositionAndGame)?.team
let position = (self as? PlayerWithPositionAndGame)?.position
if sportName == "mlb" {
return when(Data.mlbPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
if result.count == 0 {
return []
} else {
// Omitted Code
return gameStats
}
}
} else if sportName == "nfl" {
return when(Data.nflPlayerGameLogs[id].get(), Data.sportsTeams[sportName].get()).then { (result, teams) -> NSArray in
if result.count == 0 {
return []
} else {
// …Run Code Online (Sandbox Code Playgroud) swift ×3
ios ×2
objective-c ×2
scenekit ×2
fixtures ×1
promisekit ×1
ruby ×1
swift4 ×1
xcode ×1