ios - 减少 iPhone 应用程序的内存使用

标签 ios objective-c xcode interface-builder instruments

我们正在为 iPhone 制作游戏。我们已经完成了开发,现在正在努力优化游戏的内存。我们注意到,当我们在游戏中加载一个特定的 MVC 并关闭它时,并不是所有分配的内存都被释放。(添加了大约 4-5MB)。如果您继续玩 15-20 分钟,这会使游戏的内存使用率非常高,并且在发出内存不足警告后游戏最终崩溃。

这是我绑定(bind)的
1. 在游戏上运行静态分析器并修复所有内存泄漏和警告。
2. 手动检查所有类的 dealloc 是否被调用。这似乎没问题。
3. 还尝试在 Xcode 中运行分配工具,但其中的大部分条目都是 CFStrings、mallocs 和 CFNumbers 等,但并没有真正说明它们来 self 的哪个类。有没有更好的方法来使用分配工具?

我还有一些与内存相关的问题
1. 我们在游戏中的很多地方都使用了自动释放对象,而没有使用自动释放池。我的理解是自动释放的对象应该在下一个运行循环中释放并且不应该造成这么大的问题?
2. 此外,如果我通过 xib 文件加载图像,它们是否会被 iOS 缓存。他们也会占用内存吗?

我该如何解决我的内存使用问题。任何帮助,将不胜感激。 谢谢!

最佳答案

几个想法:

  1. 您在使用核心基础类(class)吗?确保对于您调用 CFRelease(或转让所有权)的名称中包含 CreateCopy 的每个对象然后 releaseautorelease Objective-C 对象)。

  2. 您是否也使用过 Instruments 中的 Leaks 工具?我想是的,但你没有提到它。参见 Finding Leaks in your AppInstruments 用户指南中。

  3. 您是否通过 imageNamed 加载图像?这会缓存图像并且不利于释放它们。使用 imageWithContentsOfFile 并手动管理缓存会更安全。

  4. 我假设您的 View Controller 的 dealloc 正在被调用并且您正在释放与类属性/ivars 关联的所有对象?

  5. 你有僵尸吗?这对于诊断目的非常有用,但在关闭僵尸之前您不会释放内存。

关于ios - 减少 iPhone 应用程序的内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446432/

相关文章:

ios - Phonegap CordovaLib 语义错误

objective-c - cocoa : is there a way to know if the user has set "Set date & time automatically" in system preferences?

iOS-在Documents中创建目录

xcode - 从我们的应用播放声音时暂停ipod,然后恢复播放

ios - 与 Aspect Fill 类似的行为,但使用图像的顶部

iOS - 使用其他框架依赖项构建静态框架

iphone - 使用 GCD 填充 TableView 单元格

objective-c - 缓入缓出功能

iphone - 访问 CGImage 的来源?

ios - 为消息创建气泡 View