我不明白如何调试此错误消息:
2011-02-01 20:45:56.151 NeMe[3206:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 0 beyond bounds for empty array'
*** Call stack at first throw:
(
0 CoreFoundation 0x027deb99 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x0292e40e objc_exception_throw + 47
2 CoreFoundation 0x027d4695 -[__NSArrayM objectAtIndex:] + 261
3 NeighborMe 0x0000f617 -[NeighborMapViewController regionFromLocations] + 65
4 NeighborMe 0x0001047b -[NeighborMapViewController locationManager:didUpdateToLocation:fromLocation:] + 94
5 CoreLocation 0x02393870 -[CLLocationManager onClientEventLocation:] + 793
6 CoreLocation 0x0239218b OnClientEvent + 49
7 CoreLocation 0x023a8a83 _Z22CLClientInvokeCallbackP10__CLClient13CLClientEventPK14__CFDictionary + 47
8 CoreLocation 0x023a9b2c _Z27CLClientHandleDaemonDataFixP10__CLClientPK23CLDaemonCommToClientFixPK14__CFDictionary + 290
9 CoreLocation 0x023acb30 _Z24CLClientHandleDaemonDataP12__CFMachPortPvlS1_ + 1125
10 CoreFoundation 0x02720982 __CFMachPortPerform + 338
11 CoreFoundation 0x027bfff4 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 52
12 CoreFoundation 0x02720807 __CFRunLoopDoSource1 + 215
13 CoreFoundation 0x0271da93 __CFRunLoopRun + 979
14 CoreFoundation 0x0271d350 CFRunLoopRunSpecific + 208
15 CoreFoundation 0x0271d271 CFRunLoopRunInMode + 97
16 GraphicsServices 0x030bd00c GSEventRunModal + 217
17 GraphicsServices 0x030bd0d1 GSEventRun + 115
18 UIKit 0x002eeaf2 UIApplicationMain + 1160
19 NeighborMe 0x00002818 main + 102
20 NeighborMe 0x000027a9 start + 53
21 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
此代码中有NSMutableArray ......所以这怎么可能?
答案 0 :(得分:29)
你有一个空数组。您试图致电[array objectAtIndex:0]
。 0超出了空数组的范围(这并不奇怪 - 任何超出空数组的界限)。
答案 1 :(得分:4)
这意味着您在[NeighborMapViewController regionFromLocations]
的早期尝试索引NSMutableArray对象。那个数组中有零元素 - 它是空的。但是你显然试图访问索引0,这将是第一个元素。由于没有第一个元素,因此会出现异常。
您希望执行以将项添加到数组的代码可能尚未执行,或者您只需要在尝试访问索引0处的元素之前检查数组的长度。很难说没有了解更多关于你正在做的事情。
gdb将偏移量报告为函数的65个字节,因此它可能位于前几行之一。您可以手动检查函数的代码以查看,或在函数的第一行设置断点并逐步执行。
答案 2 :(得分:0)
我看到这个错误,但不是例外,只是在问题导航器中。解决方案是简单地重启XCode,然后错误就消失了。
答案 3 :(得分:0)
正如Kevin Ballard所说,当你要求索引X处的元素超出数组边界时,抛出此错误,除了查找[array objectAtIndex: X]
之外,这个错误甚至可能来自现代语法{{ 1}}