Как вы обнаружили самостоятельно, вам НЕ следует использовать [tableView reloadData], потому что вы, вероятно, используете методы делегата NSFetchedResultsController
– controllerWillChangeContent:
– controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:
– controller:didChangeSection:atIndex:forChangeType:
– controllerDidChangeContent:
Эти методы фактически отвечают за обновление вашего табличного представления при добавлении, удалении или изменении объектов. Поэтому, когда вы добавляете вызов к [tableView reloadData], происходит то, что два разных потока одновременно осуществляют доступ к вашему табличному представлению и изменяют его. Это вызывает сбой, который вы испытываете.
Если вы не используете методы делегата, то сбой происходит из-за чего-то еще в вашем коде.