我正在使用 GCD 进行一些后台处理,并使用 Core Data 保存一些对象。在方法中[self saveData]
,我创建了一个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];
});
}
});