deselectRowAtIndexPath: сбой в iOS5 - PullRequest
       1

deselectRowAtIndexPath: сбой в iOS5

2 голосов
/ 19 октября 2011

Следующее прекрасно работает в 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 для каждого файла.Это просто вызвало ошибку компилятора с неизвестной командой.

1 Ответ

3 голосов
/ 20 октября 2011

Это не точный ответ на ваш вопрос, но вы можете отменить выбор строки в viewWillAppear:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [mainTable deselectRowAtIndexPath:[mainTable indexPathForSelectedRow] animated:YES];
}

Вам необходимо реализовать это в «родительском» контроллере представления, где объявлено mainTable.

Относительно вашего фактического вопроса, вы можете сказать нам, как ваш @property выглядит currentCellIndex?

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