NSRangeException ao excluir o último UICollectionViewCell

Eu tenho um UICollectionView com 1 seção. O usuário pode excluir células da coleção e eu uso este código para remoção:

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

Isso funciona bem para todas as células, exceto a última célula da coleção, que trava o aplicativo todas as vezes com o erro:Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]

Como o NSZombies não está me mostrando um rastreamento de pilha, coloquei um ponto de interrupção em todas as linhas do meu código que acessam uma matriz, mas nenhuma foi atingida, e descobri que esse erro é gerado apósdeleteItemsAtIndexPaths, numberOfSectionsInCollectionView esizeForItemAtIndexPath, mas depoisnumberOfItemsInSection ecellForItemAtIndexPath

O que poderia estar causando esse acidente? Como posso depurá-lo?

Existem postagens SO semelhantes, mas esta de 2 anos atrás não tem respostaFalha no UICollectionView ao excluir o último item, e este só resolve o problema se você deseja excluir a seção inteira:A remoção da última célula no UICollectionView causa um erro fatal

UPDATE, aqui estão os métodos de delegação da fonte de dados que são executados antes da falha:

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

questionAnswers(1)

yourAnswerToTheQuestion