iOS : ARC, 未释放内存

标签 ios memory memory-management automatic-ref-counting

我的 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/

相关文章:

ios - 我试过这段代码,但在 titleForHeaderInSection 中出现错误 "EXC_BAD_ACCESS"

objective-c - 如何将选定的 TableView 值发送回不同的 View ?

python - python中的动态内存分配

ios - 为什么当我尝试调用 UICollectionViewDataSource 的方法时,它被释放了?

c++ - 连续内存分配

ios - 提交2个版本的iOS应用的正确方法是什么?

ios - 在 Xamarin Studio 中针对较旧的 Mono 框架版本编译 iOS 应用程序

c# - 在 C# 中是否需要跨内存屏障访问不可变对象(immutable对象)?

c - PIC18F2550内存游戏PIC C18编程LED灭

c - 当在堆上请求大块内存时,如果 RAM 上没有连续空间,是否在磁盘上分配(交换)?