有谁能告诉我如何解决这个例外?调试器位于异常断点处,正如您所看到的,似乎没有关于异常的可操作信息。它发生在哪里?很确定它不在我的代码中,但我对如何继续...感到茫然...
非常感谢您的帮助。
编辑1: 这是控制台内容
*由于未捕获的异常'NSRangeException'而终止应用,原因:'* - [__ NSArrayM objectAtIndex:]:索引0超出空数组的边界'
***第一次调用堆栈:(0x30ce188f 0x3627e259 0x30c2a9db 0x8d029 0x915c5 0x35723c59 0x35725ee7 0x30cb42ad 0x30c374a5 0x30c3736d 0x36ffb439 0x32917cd5 0x72e4d 0x72de8) 终止调用抛出异常
编辑2: 这是回溯
线程#1:tid = 0x1c03,0x3627e238 libobjc.A.dylib`objc_exception_throw,stop reason = breakpoint 1.1
帧#0:0x3627e238 libobjc.A.dylib`objc_exception_throw
帧#1:0x30c2a9da CoreFoundation` - [__ NSArrayM objectAtIndex:] + 270
编辑3(解决方案): 这是使用main()方法的回溯
2012-08-31 10:27:21.489<> [820:707]未捕获的异常*** - [__ NSArrayM objectAtIndex:]:索引0超出空数组的边界
2012-08-31 10:27:32.908<> [820:707]堆栈追踪:(
0 CoreFoundation 0x30ce18a7 __exceptionPreprocess + 186
1 libobjc.A.dylib 0x3627e259 objc_exception_throw + 32
2 CoreFoundation 0x30c2a9db -[__NSArrayM objectAtIndex:] + 270
3 <> 0x00050ed1 __55-[SFSummaryCard retrieveAndDisplayFirstImageForString:]_block_invoke_0 + 148
4 <> 0x0005546d __block_global_1 + 40
5 libdispatch.dylib 0x35723c59 _dispatch_call_block_and_release + 12
6 libdispatch.dylib 0x35725ee7 _dispatch_main_queue_callback_4CF$VARIANT$mp + 194
7 CoreFoundation 0x30cb42ad __CFRunLoopRun + 1268
8 CoreFoundation 0x30c374a5 CFRunLoopRunSpecific + 300
9 CoreFoundation 0x30c3736d CFRunLoopRunInMode + 104
10 GraphicsServices 0x36ffb439 GSEventRunModal + 136
11 UIKit 0x32917cd5 UIApplicationMain + 1080
12 <> 0x00036c01 main + 220
13 <> 0x00036b20 start + 40
)
关键元素是:retrieveAndDisplayFirstImageForString()
答案 0 :(得分:8)
在Xcode 4 / iOS 5上存在一个问题,由于模拟器的伪操作系统中存在明显的错误,有时您无法在模拟器中获得异常回溯。解决方案是在main
中添加一个明确的回溯,沿着
@try {
retVal = UIApplicationMain...
}
@catch (NSException* exception) {
NSLog(@"Uncaught exception %@", exception);
NSLog(@"Stack trace: %@", [exception callStackSymbols]);
}
答案 1 :(得分:2)
您可以创建例外断点print backtrace in console。
示例:
-(void)backtraceTest
{
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", nil];
id obj = [array objectAtIndex:3]; // out of bounds
NSLog(@"%@", obj);
}
给出了这个回溯:
你可以看到在HelloWorldLayer.m文件的第34行调用了NSArray的objectAtIndex方法然后发生了异常。
答案 2 :(得分:1)
这是相关的:
http://ijoshsmith.com/2011/11/28/debugging-exceptions-in-xcode-4-2/
您可以添加一个显示回溯的“异常断点”;事件处理程序,您可以将其移动到所有项目中出现的“用户断点”。
希望我早点学会这个技巧。
答案 3 :(得分:0)
我能够通过解决方法解决: