gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 23:02:06 26 4
gpt4 key购买 nike

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

最佳答案

我遇到了同样的问题,我的 SceneKit 应用程序泄漏了大量内存。如果在让 Swift 取消初始化它之前将其 geometry 属性设置为 nil,则 SCNNode 的内存将被释放。

以下是您如何实现它的示例:

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
}
}

关于ios - 在创建新的 SCNNode 之前删除 SCNNode 不会释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32997711/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com