为什么我的iPhone应用程序在收到内存警告时会崩溃?

时间:2010-10-21 16:55:40

标签: ios uiviewcontroller exc-bad-access didreceivememorywarning

这对我来说有点神秘。我的应用程序没有使用太多的内存,但是如果我把它放在后台并运行尽可能多的内存密集型应用程序,偶尔我的应用程序会在我尝试将其唤醒时崩溃。

我查看了崩溃日志,这就是我所看到的:

0   libobjc.A.dylib                     0x000027da objc_msgSend + 18
1   UIKit                               0x0008cab4 -[UIViewController unloadViewForced:] + 132
2   UIKit                               0x0008ca22 -[UIViewController unloadViewIfReloadable] + 10
3   UIKit                               0x0008c9f2 -[UIViewController purgeMemoryForReason:] + 34
4   UIKit                               0x0008c896 -[UIViewController didReceiveMemoryWarning] + 10
5   My Application                      0x00023340 -[MailboxViewController didReceiveMemoryWarning] (MailboxViewController.m:359)
6   UIKit                               0x0008c880 -[UIViewController _didReceiveMemoryWarning:] + 8

我可以看到,我的视图控制器MailboxViewController收到didReceiveMemoryWarning条消息。由于该视图没有任何内存,因此它可以自由释放,我只需调用[super didReceiveMemoryWarning]

奇怪的是,我没有看到对我的视图控制器viewDidUnload的调用。在它到达那里之前,似乎崩溃了“EXC_BAD_ACCESS(SIGSEGV)”。

发生了什么,我该如何解决?

2 个答案:

答案 0 :(得分:0)

我猜它在你的控制器卸载它的视图时崩溃了,所以你的viewDidUnload永远不会被调用。您的视图只是一些简单的视图还是复杂的视图?我的猜测是它可能与你的观点有关。

答案 1 :(得分:0)

尝试使用Zombies进行调试 - 看起来正在将消息发送到解除分配的对象。