【问题标题】:SceneKit RunAction command take too much memory spaceSceneKit RunAction 命令占用太多内存空间
【发布时间】: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 行并且内存问题停止了。

标签: ios swift scenekit


【解决方案1】:

我找到了原因。 在循环中,一些节点没有几何图形,因为它们不应该被看到。 当为没有几何图形的节点执行 .runAction 时,它会占用一些内存并且它们会累加。

我刚刚删除了没有几何的节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 2022-07-13
    • 2015-10-14
    • 2013-07-18
    • 2013-07-11
    相关资源
    最近更新 更多