コードのどこで次の例外が発生したかを調べるにはどうすればよいですか?
2012-08-15 09:24:27.414 TestProject[82870:17303] -[TestObj doIt]: unrecognized selector sent to instance 0x1106f320
コードのどこで次の例外が発生したかを調べるにはどうすればよいですか?
2012-08-15 09:24:27.414 TestProject[82870:17303] -[TestObj doIt]: unrecognized selector sent to instance 0x1106f320
最善の方法:ブレークポイントを追加してすべての例外をキャプチャします。これにより、例外を取得するコード行が表示されます。コンソールから、質問に投稿しているのと同じメッセージが表示されるので、ポインターアドレスを使用して、例外を取得しているオブジェクトを出力します。オブジェクトがガベージである場合(デバッガーはそれを出力しません)、それはオブジェクトを過剰リリースしていることを意味します。ゾンビを有効にしている場合は、クラス名に接頭辞NSZombie__があります。それはまた、過剰放出を意味します。期待しているものとは異なるクラスを取得した場合、ある時点でオブジェクトを切り替えて、間違ったオブジェクトにメッセージを送信していることになります。
スローされた例外のブレークポイントを設定します。デフォルトでは、例外がスローされると一時停止します。そこにバックトレースと値が表示されます。
完全にランダムである場合(たとえば、再現できない場合)、ゾンビを有効にしてインスツルメントを実行すると幸運が訪れる可能性があります。