我是iphone开发的新手,在开发过程中我遇到了由于此错误导致的问题。我无法从它产生的地方追踪它。
app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 5 beyond bounds [0 .. 4]'
*** Call stack at first throw:
(
0 CoreFoundation 0x012dcbe9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x014315c2 objc_exception_throw + 47
2 CoreFoundation 0x012d26e5 -[__NSArrayM objectAtIndex:] + 261
3 Dispatch 0x0002feeb -[ZoneFareTaxi parseMessage:] + 754
4 Dispatch 0x0002fbf0 -[ZoneFareTaxi initWithMessageString:] + 92
5 Dispatch 0x0003b949 -[ServerConnection onUdpSocket:didReceiveData:withTag:fromHost:port:] + 8862
6 Dispatch 0x0002350e -[AsyncUdpSocket maybeCompleteCurrentReceive] + 458
7 Dispatch 0x00023210 -[AsyncUdpSocket doReceive:] + 1364
8 Dispatch 0x00022c60 -[AsyncUdpSocket doReceive4] + 80
9 Dispatch 0x00022add -[AsyncUdpSocket maybeDequeueReceive] + 561
10 Foundation 0x000da7f6 __NSFireDelayedPerform + 441
11 CoreFoundation 0x012bdfe3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 19
12 CoreFoundation 0x012bf594 __CFRunLoopDoTimer + 1220
13 CoreFoundation 0x0121bcc9 __CFRunLoopRun + 1817
14 CoreFoundation 0x0121b240 CFRunLoopRunSpecific + 208
15 CoreFoundation 0x0121b161 CFRunLoopRunInMode + 97
16 GraphicsServices 0x01a4d268 GSEventRunModal + 217
17 GraphicsServices 0x01a4d32d GSEventRun + 115
18 UIKit 0x0036a42e UIApplicationMain + 1160
19 Dispatch 0x000024b4 main + 102
20 Dispatch 0x00002445 start + 53
21 ??? 0x00000001 0x0 + 1
)
terminate called after throwing an instance of 'NSException'
答案 0 :(得分:7)
这很可能是一个错误。您的NSMutableArray
只有5个元素,而您正在访问索引5处的第6个对象。索引是基于0的。
问题可能存在于此方法中:[ZoneFareTaxi parseMessage:]
答案 1 :(得分:0)
它应该在类parseMessage
的{{1}}方法实现中。
在该方法中,您将消息ZoneFareTaxi
发送到objectAtIndex:
对象,传递的值在这种情况下为5(可能使用变量)。
它表示您正在访问数组的第六个元素,而它只有5个元素。数组为0索引。
答案 2 :(得分:0)
仅当您尝试从索引的数组访问元素大于数组计数时,才会出现此问题。
答案 3 :(得分:0)
由此:
-[NSMutableArray objectAtIndex:]: index 5 beyond bounds [0 .. 4]
你可以看到你试图在一个只从0到4的数组中访问索引5。
由此:
objc_exception_throw + 47
-[__NSArrayM objectAtIndex:] + 261
-[ZoneFareTaxi parseMessage:] + 754
您可以在[ZoneFareTaxi parseMessage:]
方法中看到问题正在发生。