【发布时间】:2019-12-24 20:10:13
【问题描述】:
我注意到当使用 SceneKit 的应用程序运行时内存使用量增加 稳步。经过一番搜索,我将其指向 aNode.runAction。
每次调用 runAction 时,它都会获得一点内存空间并且永远不会释放它。
因为 runAction 经常在应用程序中使用,很明显它会崩溃。
有什么办法可以避免这个问题吗?
我正在使用这种函数来移动一些节点。
我尝试移动一个节点,但没有任何改变,它只需要更少的内存。
func moveMyNodes(x:CGFloat, y:CGFloat, z: CGFloat, speed: CGFloat) {
for k in 0..myNodes.count {
let action = SCNAction.moveBy(x:x, y:y, z:z, duration: speed)
myNodes[k].runAction(action)
}
}
【问题讨论】:
-
如果不运行仪器就很难判断,但依赖项将包括您正在使用的节点类型(详细信息量),如果正在删除和添加节点(清理节点 - 将几何设置为零) ,然后检查保留周期。
-
不,即使没有删除和添加节点也会发生这种情况。为了测试我刚刚删除了 .runAction 行并且内存问题停止了。