NSRangeException beim Löschen der letzten UICollectionViewCell

Ich habe eine UICollectionView mit 1 Abschnitt. Der Benutzer kann Zellen aus der Sammlung löschen, und ich verwende diesen Code zum Entfernen:

[self.collectionView performBatchUpdates:^{
   [self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:i inSection:0]]];
   [self.media removeObjectAtIndex:i];
} completion:nil];

Dies funktioniert problemlos für jede Zelle, mit Ausnahme der letzten Zelle in der Sammlung, bei der die App jedes Mal mit dem Fehler abstürzt:Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]

NSZombies zeigt mir keinen Stack-Trace an, daher habe ich in jeder Zeile in meinem Code einen Haltepunkt eingefügt, der auf ein Array zugreift, aber keiner wurde getroffen, und ich habe festgestellt, dass dieser Fehler nach @ ausgelöst wirdeleteItemsAtIndexPaths, numberOfSectionsInCollectionView undsizeForItemAtIndexPath, Aber vorhernumberOfItemsInSection undcellForItemAtIndexPath

Was könnte diesen Absturz verursachen? Wie kann ich es debuggen?

Es gibt einige ähnliche SO Beiträge, aber dieser von vor 2 Jahren hat keine AntwortUICollectionView Absturz beim Löschen des letzten Elements, und dieser löst das Problem nur, wenn Sie den gesamten Abschnitt löschen möchten:Das Entfernen der letzten Zelle in UICollectionView führt zu einem Absturz

UPDATE, hier sind die Datenquellendelegatmethoden, die vor dem Absturz ausgeführt werden:

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(floorf(screenWidth/3), 200);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage