【发布时间】: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