核心数据堆栈,只有使用NSPrivateQueueConcurrencyType初始化的单个上下文

时间:2013-07-06 20:58:21

标签: ios objective-c multithreading core-data nsmanagedobjectcontext

我正在开发一款需要多次异步下载并将其内容保存到Core Data实体的应用。其中一个下载很大,并注意到在创建/写入托管对象上下文时UI被阻止。我的研究让我阅读了并发的核心数据设置,并开始实现其中之一。但是我遇到了问题并花了很多时间来纠正问题。

在我继续之前,我正在考虑只使用NSPrivateQueueConcurrencyType设置一个MOC。我读到的任何内容都没有提到这样做。这样我可以选择在后台执行MOC操作,或者像往常一样使用主线程,同时保持单个MOC。

这是一个好方法吗?如果没有,它有什么问题?我怀疑这是正确的方法,因为如果是,NSPrivateQueueConcurrencyType支配NSMainQueueConcurrencyType并且没有理由拥有后者。

1 个答案:

答案 0 :(得分:2)

NSPrivateQueueConcurrencyType MOC用于后台任务没有任何问题。

但您可能仍需要NSMainQueueConcurrencyType MOC。 来自documentation

  

上下文与主队列相关联,因此是绑定的   进入应用程序的事件循环,但它在其他方面类似于a   基于私有队列的上下文。您将此队列类型用于上下文   链接到仅需要使用的控制器和UI对象   在主线上。

例如,对于获取的结果控制器,您将使用 NSMainQueueConcurrencyType MOC。