Я заметил странную разницу в том, как performBatchUpdates:completion:
метод работает в iOS7 (плохие сбой) и iOS8 (хорошо). Вот код я использую:Выполнение UICollectionViewBatchUpdates crash iOS7
[self.swapItems removeObject:self.swapItems[indexPath.row]];
[self.swapItemsGrid performBatchUpdates:^{
[self.swapItemsGrid deleteItemsAtIndexPaths:@[indexPath]];
} completion:^(BOOL finished) {
[self layoutViews];
}];
В iOS8 он отлично работает, в то время как в iOS7 он падает со следующей ошибкой:
Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
Немного отладки показала, что в iOS8 метод performBatchUpdates:completion:
называет данные source collectionView:numberOfItemsInSection:
, в то время как в iOS7 это не так, следовательно, ошибка, когда ячейку пытались создать с данными объекта, находящегося в массиве данных, больше нет.
Неужели кто-нибудь еще сталкивается с этой проблемой? Возможно, у вас есть решение?
О, стоит отметить, что это происходит только в том случае, если я удаляю элемент (выполняет код выше - без сбоев), добавляет элемент, снова удаляет элемент (выполняет код выше - CRASH). В обоих случаях, хотя массив 'self.swapItems' является одним и тем же. – artooras
У меня такая же проблема. Вы поняли решение? – Snowman
К сожалению, еще нет. – artooras