Следующее прекрасно работает в iOS 4.3, но выдает EXC_BAD_ACCESS в iOS 5.
if(mainTable != nil){
[mainTable deselectRowAtIndexPath:currentIndexPath animated:YES];
mainTable имеет тип UITableView.Это терпит неудачу на строке с deselectRowAtIndexPath :.Вышеуказанное исключение возникает при выходе из основного (первого) табличного представления.Шаги: Нажмите на строку в главном представлении таблицы.Отображается другое табличное представление.Нажмите верхнюю левую кнопку, чтобы вернуться к главной таблице, и возникнет исключение.
На самом деле, к моменту, когда
- (void)viewDidDisappear:(BOOL)animated
достигнута через точку останова, currentIndexPath уже выпущен в iOS5.
Что я могу найти здесь?Я знаю, что iOS5 делает разные вещи с выпуском объектов.Возможно, есть некоторые дополнительные проверки, которые я могу сделать, но я не уверен, с чего начать.
РЕДАКТИРОВАТЬ: Он определяется как
currentCellIndex = indexPath;
и происходит от
-(void) displaySubView:(UITableView *)tableView indexPath:(NSIndexPath *)indexPath
У меня действительно включены зомби в части Run моей схемы, и теперь я получаю детали.Когда я нажимаю на строку выше, я вижу в консоли:
*** -[NSIndexPath isEqual:]: message sent to deallocated instance 0x85a2010
Почему это происходит в iOS5, а не в iOS 4.3?У меня есть точка останова в dealloc на currentIndexPath, и она никогда не срабатывает.
Я начинаю верить, что это связано с ARC.У меня все еще есть много записей / релизов.Я не хочу делать автоформат для ARC, так как это вызывает больше проблем.Я попробовал флаг, используемый для отключения ARC для каждого файла.Это просто вызвало ошибку компилятора с неизвестной командой.