Сбой приложения при попытке доступа к [tableView cellForRowAtIndexPath: indexPath] в методе делегата heightForRowAtIndexPath.
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if ([tableView cellForRowAtIndexPath:indexPath] someBOOLProperty]) { return kSomeHeight; } return kDefaultHeight; }
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
У нас нет tableViewCell объекта во время вызова вышеупомянутого метода.
tableViewCell
Я думаю, использование [tableView cellForRowAtIndexPath:indexPath] внутри вышеуказанного делегата некорректно.
tableView cellForRowAtIndexPath:indexPath
Основываясь на том, что сказал Ali3n, я думаю, вам нужно будет использовать набор данных, на котором основана ваша таблица, для определения высоты ячейки, а не использовать содержимое таблицы (которая может еще не существовать).
-cellForRowAtIndexPath: вызовет метод делегата -tableView:heightForRowAtIndexPath:, поэтому у вас есть цикл, который приведет к сбою вашего приложения.Вам нужно найти способ сопоставить indexPaths со значениями someBOOLProperty таким образом, чтобы не полагаться на выборку ячейки с -cellForRowAtIndexPath.
-cellForRowAtIndexPath:
-tableView:heightForRowAtIndexPath:
someBOOLProperty
-cellForRowAtIndexPath