CoreData
не thread safe.NSManagedObject's
нельзя передавать между потоками. Можно передавать толькоObjectId's
. Сущности, которые используются в главном потоке, должны загружаться также в главном потоке. Это связано с тем, что у каждой сущности свой контекст в котором она существует + каждый контекст имеет свой тип. Если этоNSPrivateQueueConcurrencyType
, то у них разные приватные очереди, в которых они работают, и в каком именно бэкграунд потоке будет сохранение мы знать не можем. Если изменяем сущность в одном контексте, то другие контексты не видят этих изменений. Для мержа изменений из одного контекста в другой можно использовать нотификации - каждый контекст кидает эвент когда сохраняет изменения.- http://www.slideshare.net/xzolian/core-data-with-multiple-managed-object-contexts
- [http://floriankugler.com/2013/04/29/concurrent-core-data-stack-performance-shootou
NewerOlder