вы получите ошибку EXC_BAD_ACCESS в основном в следующих случаях:
Вы пытаетесь получить доступ к объекту, который не инициализирован.
Вы пытаетесь получить доступ к объекту, который больше не существует. Либо он выпущен, либо он ноль. В режиме ARC убедитесь, что вы взяли на себя ответственность за объект, который хотите использовать. Вы передаете сообщение объекту, который объект не понимает.
Это может случиться и для плохой приведения типов. Как строки ниже, где я пытаюсь получить доступ к int с% @ вместо% d.
int myAwesomeInt = 9;
NSLog(@"%@", myAwesomeInt);
Как отлаживать:
Определите, что вы сделали, что причиной аварии. Сбой при просмотре определенного вида контроллера didLoad или в методе делегата или в конкретном действии. Это часто поможет найти объект, который вызывает ошибку.
(В вашем случае смотреть на то, что конкретно происходит, когда вы перезагрузки таблицы. Выполните трассировки стека построчно и посмотреть, что делает ваш код во время перезагрузки)
Большую часть времени «NSZombies» может помогают идентифицировать мертвый объект. Вы можете включить NSZombies, отредактировав свою схему Product -> Edit Scheme -> Diagnostics.
Если вы все еще не находите основную причину, тогда всегда возвращайтесь от контроллера детского представления к контроллеру родительского представления, чтобы узнать, какой объект нужно сохранить или какое сообщение нужно передать должным образом. Посмотрите на статический анализатор и инструменты для расширенной отладки.
Кредит: The Basic Troubleshooting guide
Надеется, что это помогает.Удачи
Я думаю, что добавление/удаление ячеек обновляется UI –
Вы освобождаете таблицу перед перегрузкой? – JAL
@JAL nope, эта функция находится в UITableViewController –