我有一个SceneKit
视图,该视图使用具有不同类型diffuse contents
的节点。类型之一是SKScene
。在添加这样的节点之前,我正在其他prepare
上运行OperationQueue
函数,以使节点在添加之前无需关闭即可进行准备。它可以在所有其他节点上正常工作,但是当我使用SKScene
作为分散内容时,EXC_BAD_ACCESS
函数上的prepare
就会崩溃。
private class AddNodeOperation: Operation {
private let node: SCNNode
private let parent: SCNNode
private let arView: AugmentedRealityViewWithSceneView
init(node: SCNNode, parent: SCNNode, arView: AugmentedRealityViewWithSceneView) {
self.node = node
self.parent = parent
self.arView = arView
}
override func main() {
arView.sceneView.prepare(node) { isCancelled }
guard isCancelled == false else { return }
parent.addChildNode(node)
}
}
操作堆栈上的最后一件事是
SceneKit`C3DSceneGetAnimationManager:
-> 0x19f013694 <+0>:ldr x0,[x0,#0x48]
0x19f013698 <+4>:退出
如果我跳过运行arView.sceneView.prepare(node) { isCancelled }
,那就没有问题。
这可以通过某种方式解决吗?