SceneKit由于内存而崩溃

时间:2018-02-19 18:39:34

标签: ios swift xcode scenekit

所以我正在使用SceneKit在iOS上处理3D应用程序。一切都很好,直到我开始实现更大和更多的文件。现在,每隔4-5次我从主视图控制器重新启动场景就会崩溃。经过几次测试后,我发现重启几次后内存太满了。 (是的,需要重新启动才能从一个3D文件转换到另一个3D文件)所以即时启动我的场景,之后即包括我的referenceNode和显示的模型。

场景开始时:

if let filePath = Bundle.main.path(forResource: "compressed", ofType: "dae", inDirectory: "models.scnassets") {
        let referenceURL = NSURL(fileURLWithPath: filePath)

        if #available(iOS 9.0, *) {
            referenceNode = SCNReferenceNode(url: referenceURL as URL)!
            referenceNode.position = SCNVector3(x: 0, y:0, z:0)
            referenceNode.load()
            gameScene.rootNode.addChildNode(referenceNode)
        }
    }

当我退出场景并尝试卸载每个节点时:

        gameScene.rootNode.enumerateChildNodes { (node, stop) -> Void in
        node.geometry = nil // tried didnt change anything.
        node.removeFromParentNode()
    }
        referenceNode.removeFromParentNode()
        referenceNode.unload()

我尝试过我在网上看到的其他解决方案,告诉我使用:

node.geometry!.firstMaterial?.normal.contents = nil
node.geometry!.firstMaterial?.diffuse.contents = nil

让我回复:

Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value

我现在几乎没有想法了。此外,如果我在重新加载场景后检查现有节点,则返回没有。那么有谁知道我怎么能够从内存中获取这些文件?

0 个答案:

没有答案