Основные данные - совместное использование NSManagedObjects между несколькими потоками

Я перенес все последствия использования одного MOC в нескольких потоках - мое приложение зависает в случайных точках, потому что MOC создается в основном потоке, и я также использую его для заполнения БД в другом потоке. Хотя код синхронизируется (@synchronize) с помощью глобального синглтона, приложение вылетает. Я прочитал, что использование отдельного MOC для каждого потока сделает все хорошо, но я также прочитал, что это также плохой подход к разделению NSManagedObjects между потоками.

Мой пример использования следующий: 1) я загружаю и анализирую XML с сервера и во время синтаксического анализа вставляю каждый новый NSManagedObject в базу данных. Все это происходит в отдельной теме. 2) Из основного потока пользователь взаимодействует с пользовательским интерфейсом, который читает данные из базы данных.

В обоих потоках я использую NSManagedObjects. Как бы вы предложили мне это исправить? Я потерпел неудачу уже несколько раз.

Чаще всего приложение создавало ошибку, предполагая, что я изменяю коллекцию при ее перечислении, что неверно, поскольку код синхронизируется, и, пока я выполняю итерацию, модификация не происходит, и наоборот - пока я изменяю ее, я не делаю 'итерации, и я сохраняю, как только я закончил.

Ответы на вопрос(2)

Ваш ответ на вопрос