Использование SCNView.prepare () вызывает сбой при использовании SKScene - PullRequest
0 голосов
/ 27 августа 2018

У меня есть 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>: ret

Если я пропущу выполнение arView.sceneView.prepare(node) { isCancelled }, то проблем не будет.

Можно ли это как-то решить?

...