【发布时间】:2015-10-20 09:52:50
【问题描述】:
使用SceneKit时,更新方法:
func renderer(aRenderer: SCNSceneRenderer, updateAtTime time: NSTimeInterval)
不在主线程上调用,而是在其他线程上调用。
我应该在主线程上做什么,在这个“SceneKit 线程”上必须做什么?
我应该在哪里添加新节点/几何图形?
在哪里可以安全地修改这些对象的位置/等?
【问题讨论】:
-
这可能是因为 GameKit 的组件建模/循环被赋予了 DOD 效率的主线程吗?
-
我不确定,我目前认为他们只是将 SceneKit 的所有内容从主线程中移出,如果您想更改任何重要的内容,则必须转到主线程。跨度>
-
注意:我偶尔会发现这个方法在主线程上被调用。现在我的应用程序在为此目的设置的断点处暂停(在 Thread.isMainThread 测试中),并且调试导航器正在显示这一点。在 Xcode 8 上的 iOS 10.2 sim 中运行。我猜这是一个 SceneKit 错误。似乎在第一次被调用时发生了百分之几的时间。
-
好吧,我已经很长时间没有使用SceneKit了,我也很可能不会再次使用它,因为问题太多了。但也许您可以尝试添加打印并查看它打印的内容 - 调试导航器偶尔会显示错误信息。
标签: ios objective-c multithreading swift scenekit