GCD でバックグラウンド処理を行っており、Core Data でいくつかのオブジェクトを保存しています。メソッドでは、バックグラウンド スレッドでコア データ操作を実行する同時実行型を[self saveData]
作成しています。すべての Core Data 操作を 内で実行しています。NSManagedObjectContext
NSPrivateQueueConcurrencyType
performBlock
さて、メインスレッドから呼び出す必要があり[self saveData]
ますか、それとも私がいるバックグラウンドスレッドで続行できますか (余分な呼び出しを避けるためdispatch_async(dispatch_get_main_queue(), ^{});
)
そのようです:
dispatch_async(dispatch_get_global_queue(0, 0), ^{
BOOL isProcessed = [self processData];
if (isProcessed) {
// Save with Core Data
[self saveData];
}
});
または、次のことを行う必要がありますか?
dispatch_async(dispatch_get_global_queue(0, 0), ^{
BOOL isProcessed = [self processData];
if (isProcessed) {
dispatch_async(dispatch_get_main_queue(), ^{
// Save with Core Data
[self saveData];
});
}
});