Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Xcode异常解释_Objective C_Xcode_Debugging - Fatal编程技术网

Objective c Xcode异常解释

Objective c Xcode异常解释,objective-c,xcode,debugging,Objective C,Xcode,Debugging,有人能告诉我如何处理这个异常吗?调试器处于异常断点处,如您所见,似乎没有关于异常的可操作信息。它发生在哪里?很确定我的代码中没有,但我不知道如何继续 非常感谢你的帮助 编辑1: 这是控制台的内容 *由于未捕获的异常“NSRangeException”而终止应用程序,原因:'* -[\uu NSArrayM objectAtIndex:]:索引0超出空数组的界限' ***第一次抛出调用堆栈:(0x30ce188f 0x3627e259 0x30c2a9db 0x8d029 0x915c5 0x35

有人能告诉我如何处理这个异常吗?调试器处于异常断点处,如您所见,似乎没有关于异常的可操作信息。它发生在哪里?很确定我的代码中没有,但我不知道如何继续

非常感谢你的帮助

编辑1: 这是控制台的内容

*由于未捕获的异常“NSRangeException”而终止应用程序,原因:'* -[\uu 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\u异常抛出,停止原因=断点1.1

帧#0:0x3627e238 libobjc.A.dylib`objc_exception_throw

帧#1:0x30c2a9da CoreFoundation`-[\uu NSArrayM objectAtIndex:][270

编辑3(解决方案): 下面是使用main()方法的回溯

2012-08-31 10:27:21.489[820:707]未捕获异常***-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的界限

2012-08-31 10:27:32.908[820:707]堆栈跟踪:(

0 CoreFoundation 0x30ce18a7例外预处理+186
1 libobjc.A.dylib 0x3627e259 objc_异常_抛出+32
2 CoreFoundation 0x30c2a9db-[\uu NSArrayM objectAtIndex:][270
3 0x00050ed1 \uuu 55-[SFSummary卡检索和显示字符串的第一个图像:]\u块\u调用\u 0+148
4 0x0005546d块全局1+40
5 libdispatch.dylib 0x35723c59 _dispatch_call_block_和_release+12
6 libdispatch.dylib 0x35725ee7_dispatch_main_queue_callback_4CF$VARIANT$mp+194
7 CoreFoundation 0x30cb42ad_u CFRunLoopRun+1268
8 CoreFoundation 0x30c374a5 CFRUNLOOPSCRONE+300
9 CoreFoundation 0x30c3736d CFRUNLOOPSRUNINMODE+104
10个图形服务0x36ffb439 GSEventRunModal+136
11 UIKit 0x32917cd5 UIApplicationMain+1080
12 0x00036c01干管+220
13 0x00036b20启动+40
)


关键元素是:retrieveAndDisplayFirstImageForString()

您可以创建异常断点

例如:

-(void)backtraceTest
{
    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", nil];
    id obj = [array objectAtIndex:3]; // out of bounds
    NSLog(@"%@", obj);
}
提供此回溯:


您可以看到,在HelloWorldLayer.m文件的第34行调用了NSArray的objectAtIndex方法,然后发生了异常

在Xcode 4/iOS 5上存在一个问题,由于仿真器的伪操作系统中存在一个明显的错误,有时您无法在仿真器中获得异常跟踪。解决方案是在
main
中添加一个显式回溯,沿着

@try {
    retVal = UIApplicationMain...
}
@catch (NSException* exception) {
    NSLog(@"Uncaught exception %@", exception);
    NSLog(@"Stack trace: %@", [exception callStackSymbols]);
}
这是相关的:

您可以添加一个显示回溯的“异常断点”;事件处理程序,您可以将其移动到出现在所有项目中的“用户断点”


但愿我能早点学会这个诀窍。

我能通过变通办法解决:

  • 已关闭所有打开的应用程序
  • 重新启动查找器
  • 运行sudo find/-name“.DS_Store”-exec rm{}\
  • 这将删除计算机上所有的.DS_存储旧文件
  • 启动finder并将默认视图设置为“列表视图”,如下所示:b-Folders_2.htm
  • 重新运行有问题的应用程序,文件选择器工作

  • 控制台也没有打印任何内容?是否启用了Xcode在抛出异常时中断?下面介绍如何启用它:**由于未捕获异常“NSRangeException”而终止应用程序,原因:“***-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的边界”***第一次抛出调用堆栈:(0x30ce188f 0x3627e259 0x30c2a9db 0x8d029 0x915c5 0x35723c59 0x35725ee7 0x30cb42ad 0x30c374a5 30C3736D 0x36ffb439 0x32917cd5 0x72e4d 0x72de8)terminate called throwing a exception(lldb)@kernix:这是它在异常断点上中断的地方。向我们展示您是如何启动数组及其定义的。除了确认异常在CoreFoundation中之外,它不会提供比OP中的屏幕截图更多的信息:*thread#1:tid=0x1c03,0x3627e238 libobjc.A.dylib
    objc_exception_throw,stop reason=breakpoint 1.1 frame#0:0x3627e238 libobjc.A.dylib
    objc_exception_throw frame#1:0x30c2a9da CoreFoundation`-[\uu NSArrayM objectAtIndex:+270它对frame#2说了什么?没有。请参阅OP中的编辑-这是使用此方法的完整回溯。这对我真的很有帮助。谢谢@KreiReed a*on异常(NSException异常)。所以我不想编辑一个字符。将很快报告此回溯方法的结果。我已使用此方法将回溯添加到OP。我们有一个赢家@Jimmy_m--谢谢--我不得不将代码从Mac屏幕重新输入到Windows屏幕,所以出现了一个意外错误。np。谢谢你的回答。这是伟大的,可能会帮助我在未来解决其他问题。
    @try {
        retVal = UIApplicationMain...
    }
    @catch (NSException* exception) {
        NSLog(@"Uncaught exception %@", exception);
        NSLog(@"Stack trace: %@", [exception callStackSymbols]);
    }