Выяснение источника nsrangeexception - PullRequest
8 голосов
/ 15 марта 2012

У меня ошибка NSRangeException, которая не возникает постоянно (особенно когда я отлаживаю).Это происходит случайно, и я не могу понять, откуда это исходит.У меня много манипуляций с массивами, поэтому сложно устранить это таким образом.

Мой вопрос заключается в том, могу ли я получить подсказку, например, класс и номер строки из выходных данных отладчика, например, каковы номера 12109 и 707?:

2012-03-15 09:25:15.303 appname[12109:707] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 0]'

Любые указатели оценены.

Редактировать: Оставшаяся часть журнала:

*** First throw call stack:
(0x33ff38bf 0x342431e5 0x33f4b275 0x1702d 0x37662331 0x3761b2b3 0x33f4d435 0x373b79eb 0x373b79a7 0x373b7985 0x373b76f5 0x3744de55 0x374e3e45 0x373aa99b 0x33fc7b4b 0x33fc5d87 0x33fc60e1 0x33f494dd 0x33f493a5 0x307cdfcd 0x373ca743 0x2325 0x22e4)
terminate called throwing an exception

Ответы [ 2 ]

53 голосов
/ 15 марта 2012

Добавить точку останова исключения. Это остановится на линии, которая вызывает исключение.

В навигаторе точек останова щелкните значок плюса в левом нижнем углу, выберите точку останова исключения и все исключения. Вы должны иметь это на всех проектах действительно, это неоценимо. У нас здесь будет гораздо меньше вопросов!

1 голос
/ 15 марта 2012

Посмотрите дальше в своем журнале аварий, и есть вероятность, что в какой-то момент он укажет на фактический метод и строку.

Например, в приведенном ниже блоке из журнала сбоя устройства последняя строка четко указывает на запрос: didLoad: метод в классе FacebookController.m в строке 264.

0x33defacb -[NSObject doesNotRecognizeSelector:] + 175
0x33dee945 ___forwarding___ + 301
0x33d49680 _CF_forwarding_prep_0 + 48
0x00037e47 -[FacebookController request:didLoad:] (FacebookController.m:264)
...