重播时如何从内存中删除级别 1?

How to remove level 1 from memory when replaying it?

我正在使用具有不同级别的 scenekit 编写游戏,这些级别是不同的文件 (uiviewcontrollers) (level1.swift, level2.swift...) 当您完成水平,你可以重播它。我注意到,当您开始游戏时,它会使用大约 33 MB 的内存。现在,当您再次按下显示关卡 1 viewcontroller 的重播按钮时,游戏会使用大约 60 MB 的内存。

所以问题是,有没有什么办法可以在我再次出现时以某种方式删除级别 1?就像是: 1级。从内存中删除 Self.presentViewController(level1)?

这些听起来像是内存泄漏的症状。您可以通过保留对场景资产的多个强引用来导致这种情况。您也可以通过编写一个保留循环来引起它:场景的各个部分相互之间保持强引用,因此即使您释放场景,它也不能让自己被释放。

运行 您的游戏使用了 Leaks Instrument。有关 Instruments 的 WWDC 视频很有帮助。 Xcode 8 中的内存图调试器将为您提供大量帮助。