我正在使用 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];
        });
    }
});