Я создал два контекста, как это:Странный родитель/ребенок NSManagedObjectContext явление
// create writer MOC
_privateWriterContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[_privateWriterContext setPersistentStoreCoordinator:_persistentStoreCoordinator];
// create main thread MOC
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];
_managedObjectContext.parentContext = _privateWriterContext;
У меня есть NSFetchResultedController
инициированную _managedObjectContext
.
Я знаю, что это странно, но я добавляю запись родителям к _privateWriterContext
, я saving
.
Удивительно, что детский контекст, и поэтому FRC
получает уведомление об этом событии. Зачем? У меня нет reset
-ed ребенок, или что-нибудь еще. Я думал, что они независимые объекты, пока детский контекст не будет сохранен.
В @pteofil статьи я нашел эту строку:
При внесении изменений в контексте, но не сохранены, он виден всем его потомков, но не к его предкам ,
.. он помещается в постоянное хранилище (через координатор постоянного хранилища) и становится видимым для всех контекстов, подключенных к хранилищу.
Согласно этой статье http://benedictcohen.co.uk/blog/archives/308, это нормальное поведение. – pteofil
И еще одна очень хорошая статья о производительности различных управляемых контекстных настроек: http://floriankugler.com/2013/04/29/concurrent-core-data-stack-performance-shootout/ – pteofil
Я вижу, вы думаете, что это каким-то образом предотвратить распространение изменений в детский контекст? Я думал, что изменения не будут распространяться до тех пор, пока я не буду наблюдать «NSManagedObjectContextDidSaveNotification» и смените изменения из уведомления, если я использую два контекста, присоединяющихся к одной и той же конфигурации PSC. –