Как понять смысл сообщения об ошибке в цели c? - PullRequest
1 голос
/ 31 января 2011

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

Может кто-нибудь помочь мне прочитать это сообщение об ошибке?

2011-02-01 00:28:04.952 FBDiary[44083:207] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSMutableArray objectAtIndex:]: index 26 beyond bounds [0 .. 25]'
*** Call stack at first throw:
(
    0   CoreFoundation                      0x011dabe9 __exceptionPreprocess + 185
    1   libobjc.A.dylib                     0x0132f5c2 objc_exception_throw + 47
    2   CoreFoundation                      0x011d06e5 -[__NSArrayM objectAtIndex:] + 261
    3   FBDiary                             0x00007035 -[FBFriendsList tableView:heightForRowAtIndexPath:] + 101
    4   UIKit                               0x004a3334 -[UISectionRowData refreshWithSection:tableView:tableViewRowData:] + 2888
    5   UIKit                               0x004a1e8b -[UITableViewRowData(UITableViewRowDataPrivate) _ensureSectionOffsetIsValidForSection:] + 152
    6   UIKit                               0x004a0a0c -[UITableViewRowData numberOfRows] + 145
    7   UIKit                               0x003578c2 -[UITableView noteNumberOfRowsChanged] + 132
    8   UIKit                               0x003642b8 -[UITableView reloadData] + 773
    9   UIKit                               0x04e5d1f0 -[UITableViewAccessibility(Accessibility) reloadData] + 60

РЕДАКТИРОВАТЬ: Итак, через несколько минут после публикации вопроса я обнаружил ошибку ... Как вы сказали, это в функции tableView:heightForRowAtIndexPath:. Однако я действительно хотел узнать, могу ли я вывести строку, в которой это вызывает проблему, из этой трассировки стека?

Ответы [ 3 ]

1 голос
/ 31 января 2011

Похоже, что обратный вызов для высоты FBFriendsList для строки передает NSIndexPath, который находится за пределами вашего массива. Где бы у вас ни был ваш FBFriendsList, вам нужно поставить точку останова и проверить количество элементов в вашем массиве, а также проверить NSIndexPath, который передается.

1 голос
/ 31 января 2011

читать особо нечего.и, как обычно, одна лишь трассировка стека не поможет вам исправить ошибку.

Для этой ошибки вам необходимо понимание протокола UITableViewDatasource.

ошибка вызвана -[FBFriendsList tableView:heightForRowAtIndexPath:], где вы, скорее всего, пытаетесь получить доступ к элементу массива данных, потому что хотите вернутьсоответствующая высота.

Так что объедините свои знания об UITableViewDatasource с вашим исключением.
Ваши знания об источнике данных должны сказать вам, что табличное представление запрашивает heightForRowAtIndexPath для всех видимых в настоящее время ячеек.
Это также должно сказатьвы сказали, что указали в табличном представлении, сколько строк должно получить к нему доступ.

Если вы объедините эти знания и свое исключение, вы должны прийти к выводу, что значение, которое вы возвращаете в - (NSInteger)tableView:(UITableView *)tableView_ numberOfRowsInSection:(NSInteger)section, неверно и, скорее всего,это 26, где это должно быть 25.

Это самая распространенная ошибка, которая происходит с UITableView.

1 голос
/ 31 января 2011

Интересная часть - [FBFriendsList tableView:heightForRowAtIndexPath:], которая является (единственной и единственной) частью вашего кода, которая является частью этой трассировки стека, поэтому вы должны посмотреть там, чтобы найти ошибку.это доступ к массиву и итоговый прогресс в создании исключения.Строки ниже - это базовые классы UIKit, которые «размещают» код вашего приложения и отвечают за вызов нужных частей в нужное время.

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