Я начинаю думать, что ответ на мой вопрос "Нет", но я все еще смущен и не уверен в этом. Поэтому, пожалуйста, подтвердите. Я уже понял, что нужно быть осторожным при использовании Core Data с несколькими потоками. Объекты NSManagedObjectContext не должны пересекать границы потоков. Будучи новичком с обоими потоками и Core Data, я с радостью обнаружил, что GCD должен сделать некоторые из них более легкими.
На самом деле, возможно, я тогда подумал, что просто создаю выделенную очередь отправки GCD для работы с Core Data (или даже, если необходимо, иметь несколько очередей отправки, каждый со своим собственным контекстом данных ядра). Это было бы просто.
Но теперь я понимаю, что одним большим преимуществом очередей отправки GCD является то, что он управляет и использует несколько потоков по мере необходимости. Итак, если я понимаю это право - задачи, которые я передаю в одну и ту же очередь отправки, могут закончиться запуском в разных потоках, потенциально передавая основной контекст данных из одного потока в другой, и что все пойдет не так. Правильно ли это?
Я прочитал много связанных вопросов и ответов, например Основные данные и потоки /Grand Central Dispatch, но я немного смущен. Принятый ответ на этот вопрос, используя очереди GCD, гарантирует, что в каждом потоке создается новый контекст, но не указывает на необходимость этого. В другом ответе говорится: "Вы можете выполнить всю работу CoreData в очереди с именем com.yourcompany.appname.dataaccess", которая, как представляется, подразумевает, что пока работа с основными данными ограничивается одной отправкой GCD, все в порядке. Возможно, это не так.