我是Xcode和Objective-C的新手。与Android Java异常不同,虽然可以从崩溃日志中获知函数名称,但我没有找到发生异常的确切行号。以下是崩溃日志:
2014-07-28 17:44:53.814 ExampleApp[82720:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
*** First throw call stack:
(
0 CoreFoundation 0x034b25e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x028bc8b6 objc_exception_throw + 44
2 CoreFoundation 0x03464bcc -[__NSArrayM insertObject:atIndex:] + 844
3 CoreFoundation 0x03464870 -[__NSArrayM addObject:] + 64
4 ExampleApp 0x0017f99e +[ReportGenerator prepareReportList:] + 5486
5 ExampleApp 0x0017db99 +[ReportGenerator generateReportContent:viewController:] + 73
6 ExampleApp 0x0017b682 +[ReportGenerator generateReport:viewController:style:] + 322
7 ExampleApp 0x000a68fd -[ReportsViewController showReport] + 189
8 libobjc.A.dylib 0x028ce81f -[NSObject performSelector:withObject:] + 70
9 Foundation 0x01fa29d8 __NSThreadPerformPerform + 285
10 CoreFoundation 0x0343b83f __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15
11 CoreFoundation 0x0343b1cb __CFRunLoopDoSources0 + 235
12 CoreFoundation 0x0345829e __CFRunLoopRun + 910
13 CoreFoundation 0x03457ac3 CFRunLoopRunSpecific + 467
14 CoreFoundation 0x034578db CFRunLoopRunInMode + 123
15 GraphicsServices 0x046949e2 GSEventRunModal + 192
16 GraphicsServices 0x04694809 GSEventRun + 104
17 UIKit 0x010bbd3b UIApplicationMain + 1225
18 ExampleApp 0x0011679d main + 125
19 libdyld.dylib 0x0300a701 start + 1)libc++abi.dylib: terminating with uncaught exception of type NSException
答案 0 :(得分:1)
您可以添加断点以停止所有例外。
在断点导航器的左下角,单击“添加”按钮。
选择添加例外断点。
在“异常”弹出菜单中,选择要停止执行的异常类型:
选择您希望程序执行停止的异常处理过程的阶段。
点击完成。
答案 1 :(得分:0)
崩溃发生在+[ReportGenerator prepareReportList:]
方法中。特别是,在尝试将对象添加到数组时。
只是,对象是零。这就是为什么日志以对象开头不能为。
(注意:当你来自Java异常的世界时,不要错误地认为ObjC异常被设计为被捕获并从中恢复。它们不是。)