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)

当您单击 tableview 并且应将视图推送到导航控制器时会发生这种情况。我从来没有复制过这个错误,所以我不能准确地说它是什么时候发生的。

可能只有 iOS 5.1.1 受到影响(仅存在此版本的崩溃报告)。我总是在将对象添加到字典之前检查它们,所以加载 xibs 可能是这样做的原因吗?也许它有点损坏,我认识到有时xibs以一种非常奇怪的方式......

感谢您的帮助

4

1 回答 1

3

如果您的崩溃报告器没有报告异常回溯,则需要对其进行修复。objc_exception_rethrow自 iOS 5(近一年前!)以来,主线程上的异常已被捕获并“重新抛出”(因此)。

我认为 __NSPlaceholderDictionary 正是你通过调用 [NSDictionary alloc] 得到的。我怀疑罪魁祸首是[NSDictionary dictionaryWithObject:x forKey:@"foo"]没有检查x非零的代码。

iTunes Connect 的崩溃报告也可能会有所帮助,尽管它们会显示实际崩溃的一部分。

于 2012-07-21T02:42:14.097 回答