我正在使用具有不同级别的 scenekit 编写游戏,这些级别是不同的文件(uiviewcontrollers)(level1.swift,level2.swift ...)完成一个级别后,您可以重播它。我注意到,当您开始游戏时,它会使用大约 33 MB 的内存。现在,当您再次按下显示 1 级 View Controller 的重播按钮时,游戏会使用大约 60 MB 的内存。
所以问题是,当我再次呈现时,有没有办法以某种方式删除级别 1?就像是: 1级。从内存中删除 Self.presentViewController(level1)?
最佳答案
这些听起来像是内存泄漏的症状。您可以通过保留对场景 Assets 的多个强引用来导致这种情况。您也可以通过编写一个保留循环来导致它:场景的各个部分相互之间保持强引用,因此即使您释放场景,它也不能让自己被释放。
使用 Leaks Instrument 运行您的游戏。有关 Instruments 的 WWDC 视频很有帮助。 Xcode 8 中的 Memory Graph Debugger 将为您提供大量帮助。
关于swift - 重播时如何从内存中删除级别 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39424691/