SpriteKit SKView显示字段内存使用情况

我很好奇当showsFields打开时,内存使用量增长得非常快? 它可以在30秒内增长到500MB。 如果我的mac只有8GB的RAM,我可能在内存警告之前调试不到8分钟,在真实设备上进行调试时效果最差。

下面的屏幕截图是从真实设备(iOS 9.2)测试的。

内存使用情况

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

skView.showsFields = true

如果要查看showsFields作用,请将此片段放在场景的-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讨论

讨论

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

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

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

希望有所帮助。

亲切的问候,Mukund