升级到iPhone OS 4.0后,应用程序切换后应用程序开始崩溃。当应用程序收到内存警告时,应用程序在同一位置崩溃。
当收到内存警告时,似乎某些对象会自动释放,然后当我们尝试使用解除分配的对象时应用程序崩溃。
是否可以测试对象是否已被解除分配,以便我们可以重新分配它们?
答案 0 :(得分:6)
您无法测试是否已取消分配特定对象,因为在取消分配后,该对象不再存在。你唯一能做的就是测试从另一个对象引用可疑对象是否仍然是非零的。
这里的问题不是解除分配,而是保留不当。您有一个已标记为不再使用的对象,系统正在系统应该将其终止。在低内存中看到它的唯一原因是系统立即停止并排出所有释放池,而不是等待正常循环。
您需要确保已正确保留所需的所有对象,以免它们被错误地释放。即使在内存不足的情况下,也不会释放保留的对象。
我想补充一点,低内存崩溃的最常见原因是假设即使未显示视图,视图中的视图或资源也始终存在。系统将在低内存中清除未显示的视图及其资源(如图像)。检查视图控制器的didReceiveMemoryWarning
。
答案 1 :(得分:4)
您可以添加
-(void)dealloc { ... }
如果是正确的话,请将其留空,并在其中添加断点。
此答案更正为ARC
和NON-ARC
答案 2 :(得分:2)