swift - 场景转换导致内存泄漏

标签 swift xcode

我正在使用 Xcode 10.1 IDE 和 swift 4.2 制作一个简单的游戏

我设计了主菜单系统,以便每个页面的 UI 都通过单独的场景呈现。

每次加载新场景时,内存使用量都会增加大约 0.1 MB。不多,但我不想因为这个问题而开始扩展游戏。

Memory leak when presenting SpriteKit scenes

Memory problems when switching between scenes SpriteKit

Tab-based SpriteKit Apps and Scene Caching

我已经仔细阅读了引用资料和在线资料。我通过以下方式检查了 Retain Cycles: 在使用的​​所有场景和对象类的末尾插入了 deinit 语句。它们都被正确调用。对应用程序进行分析以查找僵尸对象和泄漏,但运行时分析器结果中没有明显显示任何内容。

有人知道导致内存泄漏或场景转换缓存的原因以及防止这种情况的方法吗?

我很困惑现在扩展游戏似乎是错误的做法,因为随着复杂性的增加,问题可能会变得更加复杂。

最佳答案

经过进一步测试,我发现问题在于通过场景编辑器附加声音 Action 。

通过代码附加 Action 可提供稳定的内存使用,场景转换不会增加 0.1MB。

这只是部分答案,但如果其他人遇到此问题并有更多信息,请发布

关于swift - 场景转换导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53725901/

相关文章:

json - 将嵌套的 JSON 数据列出到 TableView

swift - 为什么属性观察器可以添加到存储属性,但不能添加到惰性存储属性

swift - 在 Swift 中绑定(bind)接受符合某一协议(protocol)的枚举

ios - SKTexture 在 Swift/SpriteKit 中没有正确更新

ios - 重命名核心数据实体,表示的 ClassName 不会重命名

ios - 更改iOS 7中的引用计数?

ios - Xcode 8 - 当用户点击背景时让键盘消失

c - 允许在 Swift 中使用 C 函数的桥接 header 失败

ios - "__mh_execute_header"的 undefined symbol

objective-c - 在与他人共享代码之前编译一个 Objective C iOS 类