在创build新的SCNNode之前移除SCNNode不释放内存

我正在构build一个应用程序,使用Scenekit来显示基于从数据库返回的信息的场景。 我创build了一个类func的自定义类创build一个SCNNode包含需要绘制的一切,并将其返回到我的SCNView。 在调用这个函数之前,我删除所有现有的节点 一切工作很好,直到我需要再次调用它。 删除旧的SCNNode之后在创build新内存之前,不会释放内存。 有没有一个标准的方式来删除和更换SCNNode,而不会超载内存? 我是iOS开发新手,从来没有真正完成graphics。 谢谢

我有同样的问题,我的SceneKit应用程序泄漏了很多内存。 SCNNode的内存被释放,如果你设置它的geometry属性nil ,让Swift去初始化它。

下面是一个如何实现它的例子:

 class ViewController: UIViewController { @IBOutlet weak var sceneView: SCNView! var scene: SCNScene! // ... override func viewDidLoad() { super.viewDidLoad() scene = SCNScene() sceneView.scene = scene // ... } deinit { scene.rootNode.cleanup() } // ... } extension SCNNode { func cleanup() { for child in childNodes { child.cleanup() } geometry = nil } }