У меня есть подкласс UITableViewController
, который выполняет некоторые анимации при входе в режим редактирования, а именно: удаление UIBarButtonSystemItemAdd
из панели навигации и анимация первой строки таблицы из отсутствия, а затем возврат в режим редактирования выход:
- (void) setEditing: (BOOL) editing animated: (BOOL) animated
{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow: 0 inSection: 0];
if (editing)
{
[self removeAddButton];
[datasource removeObjectAtIndex: 0];
[tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationTop];
}
else
{
[self restoreAddButton];
[datasource insertObject: @"First Row" atIndex: 0];
[tableView insertRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: UITableViewRowAnimationTop];
}
[indexPath release];
[super setEditing: editing animated: animated];
}
Проблема в том, что когда кнопка «Редактировать» нажимается слишком быстро несколько раз, а анимация еще не завершена, приложение вылетает с:
AppName(1824,0xa0ae5500) malloc: *** error for object 0x5f503a0: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Очевидно, что что-то происходит, когда у чего-то, что анимируется внутри или снаружи, не хватает времени, чтобы закончить, так как же мне обойти это? Я делаю что-то ненужное / неправильное?