【问题标题】:SpriteKit SKView showsFields memory usageSpriteKit SKView 显示字段内存使用情况
【发布时间】:2016-04-26 12:07:37
【问题描述】:

我很好奇showsFields什么时候开启,内存占用增加的非常快?它可以在 30 秒内增长到 500MB。如果我的 mac 只有 8GB 的​​ RAM,在内存警告之前我可能只有不到 8 分钟的时间来调试,在真实设备上调试时会最糟糕。

下面的截图是在真机(iOS 9.2)上测试的。

您可以通过创建一个 SpriteKit 项目并在视图控制器内的 viewDidLoad() 方法中打开 showsFields 来快速尝试。

skView.showsFields = true

如果您想查看 showsFields 的作用,请将这个 sn-p 放在场景的 -didMoveToView(view:) 方法中。

override func didMoveToView(view: SKView) {
    let myField = SKFieldNode.springField()
    myField.position = CGPointMake(frame.midX, frame.midY)
    myField.strength = 1.0
    self.addChild(myField)
}

这是来自 Apple 的 showsFields 讨论

讨论

启用此调试选项后,每次渲染一帧时,都会在场景后面绘制一张图像,显示场景中包含的任何物理场的效果。

【问题讨论】:

  • 你在真机上试过了吗?模拟器上的 SpriteKit 非常错误且效率低下。
  • 是的,内存警告会强制应用退出
  • 这是一个错误。预计它会在 2017 年或 2018 年修复。但不是明天。
  • 我也遇到了这个问题。吃记忆快。在几秒钟内崩溃应用程序。 iPhone 6 Plus,iOS 9.2.1,瞬间上百MB。而且我实际上没有看到任何调试输出!
  • 调试输出是视觉输出,尝试在场景中添加物理场,它应该是可见的,但它仍然只能持续很短的时间,直到它完成你的记忆。

标签: ios swift sprite-kit


【解决方案1】:

看起来每帧绘制的调试图像没有被正确清除,这可能导致内存泄漏。

最好通过https://developer.apple.com/bug-reporting/ 向 Apple 提交错误报告 所以他们知道有很多人遇到了这个问题,并希望可以给予更高的优先级。

希望对您有所帮助。

亲切的问候, 穆昆德

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多