1

再現可能な方法でクラッシュする iPhone アプリをデバッグする際に問題が発生しました。

短編小説: カスタムUIViewControllerが割り当てられ、UINavigationControllerのスタックにプッシュされます。しばらくUIViewControllerして、 がスタックからポップされます。をスタックにプッシュするとUIViewController、アプリがクラッシュします。

クラッシュの標準的な手順は、Instruments をNSZombie有効にして使用することです。オブジェクトの履歴を調べると、私が理解できないことが明らかになりました:

  • オブジェクトは 2 つのautoreleaseメッセージを受け取り、
  • NSAutoreleasePoolドレイン メソッドは、3 つのリリース メッセージを送信します。

これまでのところ、クラッシュを防ぐ唯一の方法は、問題のオブジェクトにリリース メッセージを 1 つも送信しないことです。これにより、メモリ リークの赤いフラグが立てられます。

私が見落とした他の解決策はありますか?

更新:あなたの一人が明白に指摘したように:

コードに問題があります。自動解放プールのドレインとは関係ありません。

UIViewController最初のものがデリゲートとして渡されたことが判明したため、呼び出しがナビゲーションコントローラー自体から来UINavigationControllerたときに混乱しました。Zombie

間違った質問をする前に、次回はもっと注意する必要があります。

4

0 に答える 0