Я читал документы Apple и все еще есть вопрос, на который я не могу найти ответ. У меня есть объект UIManagedDocument, который имеет два вложенных контекста: дочерний в основном потоке и родительский в частном потоке. И далее у меня есть серверная часть. Итак, когда данные поступают с сервера, я хочу вставить их в мой управляемый документ в фоновом потоке.
Является ли он потокобезопасным, чтобы создать асинхронную очередь, создать там NSManagedObjectContext и установить в качестве родительского дочернего контекста UIManagedDocument, который создается в основном потоке?
dispatch_queue_t fetchQ = dispatch_queue_create("Data fetcher", NULL);
dispatch_async(fetchQ, ^{
//here goes some code for downloading data from the server
NSManagedObjectContext * backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundContext setParentContext:self.eventDatabase.managedObjectContext]; // is this thread safe?
//some code for creating objects in backgroundContext
NSLog(@"inserting data in background thread");
});
dispatch_release(fetchQ);
Другими словами, является ли потокобезопасным назначение контекста, созданного в родительском частном потоке, который был создан в основном потоке?