Vas*_*ily 1 memory memory-management ios automatic-ref-counting
我的iOS应用程序有点奇怪.一段时间后我的应用程序在内存中变低,因此内存警告,一切似乎都很好,但是当我检查内存使用情况时,我注意到所有对viewDidUnload的调用都没有释放大量内存,所以在我点击几下之后应用程序,它再次在内存警告,一切似乎再次正常,但没有很多内存已被释放,所以它再次在内存警告更快,然后它崩溃(大多数时间后第三个内存警告) .这个崩溃是随机的:应用程序冻结,应用程序离开,我的调试器说app暂停,但没有糟糕的访问或sigbort,没有僵尸.我的猜测是,内存警告无法释放足够的内存.
(我检查了所有viewDidUnload,并将每个在viewDidLoad中分配的对象设为nil)
任何帮助都会有用!
非常感谢.
所以我设法解决了我的问题.
我在所有控制器中写了" - (void)dealloc"方法,并检查我是否应该输入它.(在流行音乐控制器,解散等..)
每次没有,我会在控制器中一步一步地看看是什么让我的控制器保留了自己的控制权.
大多数情况下,某些财产不在"不安全"的代理中,而是在"ASSIGN"中(并且不应该在分配中但在不安全的情况下)(来自非ARC项目的遗产......)
我也有一些奇怪的控制器与XIB即使是空的也没有被释放.我使用复制/粘贴逐步重建新的一个,并且完全使用完全相同的代码,新的控制器被释放,之间没有明显的区别!gnneee
至少我现在知道如何调试这类问题......
我认为没有任何方法可以在没有更多数据的情况下给出具体答案,所以我能做的最好的事情就是建议你不要再猜测你的应用程序会发生什么,并学习如何衡量实际情况.在Instruments下运行您的应用程序,您将能够检查泄漏,并且实际上还可以查看哪些类对应用程序的大部分内存负责.
您应该确保知道如何使用Leaks仪器来识别泄漏的对象,还要知道如何使用Allocations工具来识别应该已经发布的孤立(但未泄露)的对象集,或者只是您的应用程序没有响应内存警告的情况如你所料.
https://developer.apple.com/library/ios/#documentation/developertools/conceptual/InstrumentsUserGuide/AboutTracing/AboutTracing.html可能是一个很好的起点,也有很多教程可供使用; http://www.raywenderlich.com/2696/how-to-debug-memory-leaks-with-xcode-and-instruments-tutorial和http://www.friday.com/bbum/2010/10/17/什么是泄漏 - 不泄漏 - 使用 - 快照 - 分析 - 发现 - 不合需要的 - 内存增长/是我看到的第一批结果.
归档时间: |
|
查看次数: |
10384 次 |
最近记录: |