我注意到的方法在iOS7(壞 - 崩潰)和iOS8(好)中的工作方式有一個奇怪的差異。下面的代碼我使用:UICollectionView的performBatchUpdates崩潰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:
方法調用數據源方法collectionView:numberOfItemsInSection:
,而在iOS7中它不會,因此,嘗試用不在數據數組中的對象的數據創建單元格的錯誤。
有沒有其他人遇到過這個問題?也許你有一個解決方案?
哦,值得注意的是,只有當我刪除一個項目(執行上面的代碼 - 沒有崩潰),添加一個項目,再次刪除一個項目(執行上面的代碼 - CRASH)時纔會發生。在這兩種情況下,'self.swapItems'數組都是相同的。 – artooras
我有這個相同的問題。你有沒有想出一個解決方案? – Snowman
不幸的是,還沒有。 – artooras