0

次の実行時エラーが発生し、WHYYYY を決定することはできません。エラーは、VC のいずれかからまたはメソッドThread 1: EXC_BREAKPOINT (code=EXC_1386_BPT, subcode=0x0)を実行するたびに発生するようです。dismissModalViewController:animatedpushViewController:animated

ゾンビ オブジェクトを有効にすると、デバッガーに次のメッセージが表示されます2012-06-14 16:34:58.769 MyApp[5952:17903] *** -[MyDetailsVC respondsToSelector:]: message sent to deallocated instance 0x8c3d400

これは、MyDetailsVC ViewController にアクセスした後にのみ発生します。シナリオは次のとおりです。

  • アプリを起動すると、すべてが完全に機能し、View Controller へのプッシュとポップ、およびモーダル VC の表示と非表示を問題なく行うことができます。
  • MyDetailsVC にプッシュし、何もせずに [戻る] ボタンをタップします。
  • MyDetailsVC にプッシュする前の状態に戻りました。VC にプッシュするか、モーダル VC を提示する必要があるポイントに到達するまで、アプリは引き続き完全に動作します。その後、実行時エラーが発生します。

エラーが発生した場合、MyDetailsVC は画像に表示されておらず、他の VC とは何の関係もありません。

この問題が何であるかを判断するために、デバッガーでより詳細に調べるにはどうすればよいですか?

また、エラーメッセージには「メッセージが送信されました」という単語が表示されるため、VC のすべての NSNotifications にほとんどコメントを付けて、VC の 1 つがメッセージを VC に送信しようとしている可能性を排除しました。生きている...運が悪い!

PS - Xcode 4.3.1、5.1 w/ARC を使用しています

4

2 に答える 2

1

デバッガーのコールバックスタックには、コードのどの行が発生しているかを示すものはありませんか?

replysToSelectorは、デリゲートで頻繁に呼び出されます(プロトコルのオプションのメソッドが実装されているかどうかを確認するため)。MyDetailsVCは、自分自身を代理人として何かに割り当てましたか?その場合は、必ず、deallocルーチンでxyz.delegate=nilを割り当ててください。

したがって、おそらく「self.navigationController.delegate=self」があります。したがって、deallocルーチンには、一致する「self.navigationController.delegate=nil」が必要です。

于 2012-06-15T00:25:45.820 に答える
1

問題はNSNotificationsではありません。Objective-cのメッセージは単なる関数/メソッド呼び出しです。replysToSelector:が問題を引き起こしているようです。

MyDetailsVCに[selfrespondsToSelector:@ "somemethodhere"]があるかどうかを確認します。また、MyDetailsVCが閉じられて割り当てが解除された後、別のオブジェクトがMyDetailsVCでrespondsToSelectorを呼び出す可能性があります。myDetailsVCのviewDidUnloadで、@ synthesizedプロパティをnilに設定し、保留中のすべてのperformSelector呼び出しを停止したことを確認してください。

于 2012-06-15T00:19:36.810 に答える