从我开发的应用程序中获得了一些奇怪的堆栈跟踪。这里是堆栈跟踪:
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)
当您单击一个表 View 时,会发生这种情况,并且应在导航 Controller 上推一个 View 。我从未复制过此错误,所以我无法确切地说出它何时发生。
可能只有iOS 5.1.1受到了影响(仅存在该版本的崩溃报告)。
我总是在将对象添加到字典之前检查对象,因此加载xibs可能是原因吗?也许是某种程度的损坏,我意识到有时臂架的安装方式很奇怪...
谢谢你的帮助
最佳答案
如果崩溃报告程序没有报告异常回溯,则需要对其进行修复。自iOS 5(一年前!)以来,主线程上的异常已被捕获并“重新抛出”(因此为objc_exception_rethrow
)。
我认为__NSPlaceholderDictionary就是通过调用[NSDictionary alloc]获得的。我怀疑罪魁祸首是执行[NSDictionary dictionaryWithObject:x forKey:@"foo"]
而不检查x
是否为nil的代码。
iTunes Connect的崩溃报告也可能会有所帮助,尽管它们显示的是实际崩溃的一小部分。
关于iphone - Hockey的CrashReport,使用NSPlaceholderDictionary的尴尬Stacktrace,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11583168/