0

私が開発したアプリから奇妙なスタック トレースを取得しました。ここにスタックトレース:

Exception Type:  SIGTRAP
Exception Codes: #0 at 0x312b1848
Crashed Thread:  0

Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: 
attempt to insert nil object from objects[0]'

Thread 0 Crashed:
0   libsystem_kernel.dylib              0x35c48848 __kill + 8
1   CoreFoundation                      0x34dba957 __handleUncaughtException + 75
2   libobjc.A.dylib                     0x361e1345 _objc_terminate + 129
3   libc++abi.dylib                     0x000043c5 safe_handler_caller(void (*)()) + 77
4   libc++abi.dylib                     0x00004451 operator delete(void*) + 1
5   libc++abi.dylib                     0x00005825 __cxa_current_exception_type + 1
6   libobjc.A.dylib                     0x361e12a9 objc_exception_rethrow + 13
7   CoreFoundation                      0x34d1050d CFRunLoopRunSpecific + 405
8   CoreFoundation                      0x34d1036d CFRunLoopRunInMode + 105
9   GraphicsServices                    0x36f85439 GSEventRunModal + 137
10  UIKit                               0x32df5cd5 UIApplicationMain + 1081
11  myApp                               0x000073f9 main (main.m:42)

これは、テーブルビューをクリックしたときに発生し、ナビゲーション コントローラーにビューをプッシュする必要があります。私はこのバグを再現したことがないので、いつ発生したか正確に言うことができませんでした.

iOS 5.1.1 のみが影響を受ける可能性があります (このバージョンのクラッシュ レポートのみが存在します)。オブジェクトをdictに追加する前に常にオブジェクトをチェックするので、xibsをロードすることがその理由でしょうか? おそらくそれは一種の破損です.xibsが非常に奇妙な方法であることに気づきました...

助けてくれてありがとう

4

1 に答える 1

3

クラッシュレポーターが例外バックトレースを報告していない場合は、修正する必要があります。iOS 5(ほぼ1年前!)以降、メインスレッドの例外がキャッチされ、「再スロー」されました(したがってobjc_exception_rethrow)。

__NSPlaceholderDictionaryは、[NSDictionaryalloc]を呼び出すことで得られるものだと思います。犯人は、nil以外の[NSDictionary dictionaryWithObject:x forKey:@"foo"]チェックをせずに実行するコードだと思います。x

iTunes Connectのクラッシュレポートも役立つ場合がありますが、実際のクラッシュのごく一部が表示されます。

于 2012-07-21T02:42:14.097 に答える