6

非同期イベントを伴う大きなプロジェクトがあり、エラーが発生することがあります [__NSArrayM insertObject:atIndex:]:オブジェクトをnilにすることはできませんが、このエラーがどこにスローされているのかわかりません。このエラーをキャッチするにはどうすればよいですか。オペレーションinsertobject:atIndexを作成するすべての場所でassertを作成します。

これはスタックです:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***    -[__NSArrayM insertObject:atIndex:]: object cannot be nil'


*** First throw call stack:

(0x34c352a3 0x32f4597f 0x34b7f8d9 0xc48db 0xc3ced 0xc3b41 0x1178d9 0x148aed 0x103cfd    0x102fc9 0x101f95 0x35f25595 0x35f7a13b 0x35f7a081 0x35f79f65 0x35f79e89 0x35f795c9 0x35f794b1 0x35f67b93 0x35f67833 0xd820b 0x35fc8275 0x3604aea9 0x326efa6f 0x34c0a5df 0x34c0a291 0x34c08f01 0x34b7bebd 0x34b7bd49 0x350b82eb 0x35f5a301 0x62e45 0x62de0)

libc++abi.dylib: terminate called throwing an exception
4

4 に答える 4

47

コードがクラッシュしている場所を確認する良い方法は次のとおりです。

1) Xcode のブレークポイント タブに移動します。

2) 下部にある「+」ボタンをクリックします。

3) 例外ブレークポイントを追加する

a) 中断タブで両方を選択します。

  i) on Throw 

  ii) on Catch 

ビルドして実行します。

4) これらのブレークポイントは、アプリが 90% の確率でクラッシュしている場所を正確に示します。

これが何らかの形で役立つことを願っています。:)

于 2012-12-18T09:11:19.520 に答える
3

スローされた例外が見つからない場合があります。これらsymbolic breakpointsをプロジェクトに追加してみてください。次に実行します

objc_exception_throw
 malloc_error_break
 [NSException 発生]

あなたのXcode後藤Product -> Debug -> Create Symbolic Breakpointで。上記の各ブレークポイントを に入力してSymbolを押すDoneBreakpoint navigator (cmd + 6)、左下隅に+あるシンボルを見つけて作成し、それをクリックし+Add symbolic breakpoint. 実行してみると、クラッシュしている特定の行に移動します。

于 2012-12-18T09:50:31.107 に答える
-8

どうやら、挿入したオブジェクトは nil であってはなりません。それをチェックしてください!

于 2012-12-18T09:09:01.350 に答える