1

これは私にとって一種の謎です。私のアプリケーションはあまりメモリを使用しませんが、バックグラウンドに置いてメモリを大量に消費するアプリケーションをできるだけ多く実行すると、アプリケーションを起動しようとするとクラッシュすることがあります。

クラッシュログを確認しましたが、これが表示されます。

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

ご覧のとおり、MailboxViewControllerViewControllerはdidReceiveMemoryWarningメッセージを受け取ります。そのビューには実際に解放できるメモリがないため、を呼び出すだけ[super didReceiveMemoryWarning]です。

奇妙なことに、ViewControllerのへの呼び出しが表示されませんviewDidUnload。そこに到達する前に、「EXC_BAD_ACCESS(SIGSEGV)」でクラッシュするようです。

何が起こっているのですか、どうすれば修正できますか?

4

2 に答える 2

0

コントローラーがビューをアンロードしたときにクラッシュしたと思われるため、viewDidUnload が呼び出されることはありません。あなたのビューは単純なビューですか、それとも複雑なビューですか? 私の推測では、それはあなたの見方と関係があるかもしれません。

于 2010-10-21T17:47:37.057 に答える
0

ゾンビを有効にしてデバッグしてみてください。割り当てが解除されたオブジェクトにメッセージが送信されているようです。

于 2010-10-22T00:00:11.953 に答える