1

Cocos2D といくつかの UIKit が混在するアプリがあります。最近いくつかの新機能を実装しているため、メモリ管理が間違っているか、何かが過剰に解放されている可能性がありますが、ホーム ボタンをクリックしてアプリを終了すると、コンソールがクラッシュします。メッセージ(lldb)のみ。NSZombiesEnabled をオンにしても、何も変わりません。

私のアプリが指す唯一のものは、次のような行です。

libGPUSupportMercury.dylib`gpus_ReturnNotPermittedKillClient:
0x38101094:  trap   
0x38101096:  nop  

これが何を意味するのかはわかりませんが、これを修正したいと思います。なぜこれが起こっているのか誰にも分かりますか?

前もって感謝します!

編集:これの原因は、unscheduleAllSelectors と stopAnimation を実行した後に、Cocos2D の CCDirector で一時停止を呼び出しているためだと思います。これら2つを呼び出さない場合、lldbクラッシュはありません。

4

3 に答える 3

2

例外に違反しているため、アプリが強制終了されています。ほとんどの場合、アプリがバックグラウンドに転送された後に GPU を使用していますが、これは厳密に違法であり、システムがアプリに kill シグナルを送信する原因となります。

アプリがデバッガーで実行されていて、デバッガーが処理できるもの (マッハ例外など) ではなく、外部シグナル (kill シグナルなど) によって強制終了された場合、デバッガーは知っている情報をすべて提供し、プログラムのエントリ ポイント (これにより、通常、デバッガはmain().

ただし、注意すべき重要なことは、アプリケーションがバックグラウンドに入る前に、すべての GPU アクティビティを終了する必要があるということです。これを行うのに適した場所は、通知ハンドラーUIApplicationWillResignActiveNotificationまたは同様の名前のアプリケーション デリゲート コールバックです。

于 2012-08-28T18:22:39.150 に答える
0

おそらく、アプリがバックグラウンドにあるときに許可されていない OpenGL で (Cocos2D 経由で) レンダリングしようとしている可能性があります。

于 2012-08-28T18:20:26.917 に答える
0

これは、Cocos2D に関連する私の問題の実際の修正であることがわかりました: http://www.cocos2d-iphone.org/forum/topic/7326

于 2012-09-09T23:33:24.197 に答える