私はアップルのドキュメントを読んでいますが、AIが答えを見つけることができないという質問があります。メイン スレッドの子コンテキストとプライベート スレッドの親コンテキストの 2 つのネストされたコンテキストを持つ 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);
言い換えれば、メインスレッドで作成されたプライベートスレッドの親で作成されたコンテキストに割り当てることはスレッドセーフですか?