我的 iOS 应用程序有点奇怪。
过了一会儿,我的应用程序内存不足,所以内存警告,一切似乎都很好,但是当我检查内存使用情况时,我注意到所有对 viewDidUnload 的调用都没有释放大量内存,所以在我的点击几下后应用程序,它再次出现内存警告,一切似乎又好了,但没有释放很多内存,所以它再次进入内存警告更快,然后它崩溃(大部分时间在第三次内存警告之后) .这个崩溃是随机的:应用程序卡住,应用程序离开,我的调试器说应用程序暂停,但没有错误的访问或 sigbort,没有僵尸。
我的猜测是内存警告无法释放足够的内存。
(我检查了我所有的 viewDidUnload 并使在 viewDidLoad 中分配的每个对象都为零)
任何帮助都会很有用!
多谢。
最佳答案
所以我设法解决了我的问题。
我在所有 Controller 中都写了“-(void) dealloc”方法,并检查我是否按我应该的方式输入了它。 (在弹出 Controller 上,解雇等..)
每次没有,我都会在 Controller 中一步一步地查看是什么阻止了我的 Controller 从 hive 释放。
大多数时候是一些不在“unsafe_unretained”中的属性
在“ASSIGN”中的委托(delegate)(不应该在分配中,而是在 unsafe_unretained 中)
(来自非 ARC 项目的遗产......)
我还有一些带有 XIB 的奇怪 Controller ,即使为空也没有释放。
我用复制/粘贴一步一步地重建新的,最后用完全相同的代码,新的 Controller 被释放了,那时没有明显的区别!!!格尼
至少我现在知道如何调试这类问题......
关于iOS : ARC, 未释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496029/