后台问题中的 NSMangedObjectContext performBlock

NSMangedObjectContext performBlock in background issue

我阅读这篇文章article 是为了在后台将对象保存在 Core Data 数据库中。

在文章的最后,他们有这段代码可以在后台保存数据:

[temporaryContext performBlock:^{
   // do something that takes some time asynchronously using the temp context

我知道如果我们使用 performBlock 操作将异步完成,但是在什么队列中?我是否需要像这样将它放在后台线程中:

dispatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0), { () -> Void in
            temporaryContext.performBlock({ () -> Void in

            })
        })

或者足够使用:

temporaryContext.performBlock({ () -> Void in

                })

够用:

temporaryContext.performBlock({ () -> Void in

})

您的代码将在与 temporaryContext 关联的队列中调用。 temporaryContext 是一个 NSManagedObjectContext,它有自己的私有队列 (NSPrivateQueueConcurrencyType)