首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建新的SCNNode之前,删除SCNNode不会释放内存

在创建新的SCNNode之前,删除SCNNode不会释放内存
EN

Stack Overflow用户
提问于 2015-10-07 16:33:17
回答 1查看 2.5K关注 0票数 5

我正在构建一个应用程序,它使用Scenekit来显示基于数据库返回的信息的场景。我已经创建了一个带有类func的自定义类,该类创建了一个包含需要绘制的所有内容的SCNNode,并将其返回给我的SCNView。在调用此函数之前,我将删除所有现有节点。一切都很顺利,直到我第二次见到它。删除旧的SCNNode之后,在创建新的内存之前,内存不会被释放。是否有一种在不重载内存的情况下删除和替换SCNNode的标准方法?我是iOS开发的新手,以前也从来没有真正做过图形。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-26 09:25:39

我也遇到了同样的问题,我的SceneKit应用程序漏了很多内存。如果将SCNNodegeometry属性设置为nil,则会释放它的内存,然后才允许Swift对其进行去初始化。

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

代码语言:javascript
复制
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
    }
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32997711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档