Задача-c: не удалось понять место производителя исключения из трассировки стека? - PullRequest
0 голосов
/ 15 сентября 2011

Я новичок в разработке 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'

Ответы [ 4 ]

7 голосов
/ 15 сентября 2011

Это, вероятно, отключено на одну ошибку. Ваш NSMutableArray имеет только 5 элементов, и вы получаете доступ к 6-му объекту по индексу 5. Индексы основаны на 0.

Вероятно, проблема заключается в этом методе: [ZoneFareTaxi parseMessage:]

0 голосов
/ 15 сентября 2011

Из этого:

-[NSMutableArray objectAtIndex:]: index 5 beyond bounds [0 .. 4]

вы можете видеть, что вы пытаетесь получить доступ к индексу 5 в массиве, который идет только от 0 до 4.

Из этого:

objc_exception_throw + 47
-[__NSArrayM objectAtIndex:] + 261
-[ZoneFareTaxi parseMessage:] + 754

вы можете видеть, что проблема происходит в вашем [ZoneFareTaxi parseMessage:] методе.

0 голосов
/ 15 сентября 2011

эта проблема появляется только в том случае, если вы пытаетесь получить доступ к элементу из массива с индексом, превышающим количество элементов массива

0 голосов
/ 15 сентября 2011

Должен быть в реализации метода parseMessage класса ZoneFareTaxi. В этом методе вы отправляете сообщение objectAtIndex: объекту NSMutableArray, передавая значение, которое в этом случае равно 5 (предположительно с использованием переменной).

В нем говорится, что вы обращаетесь к шестому элементу массива, в то время как в нем всего 5 элементов. Массивы проиндексированы на 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...