ios - 只有一个上下文的核心数据栈用 NSPrivateQueueConcurrencyType 初始化

标签 ios objective-c multithreading core-data nsmanagedobjectcontext

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

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

这是一个好方法吗?如果不是,它有什么问题?我怀疑这是不是正确的方法,因为如果是这样,NSPrivateQueueConcurrencyType 将主导 NSMainQueueConcurrencyType,并且没有理由使用后者。

最佳答案

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

但是您可能仍然需要一个 NSMainQueueConcurrencyType MOC。 来自documentation :

The context is associated with the main queue, and as such is tied into the application’s event loop, but it is otherwise similar to a private queue-based context. You use this queue type for contexts linked to controllers and UI objects that are required to be used only on the main thread.

例如,对于获取的结果 Controller ,您可以使用 NSMainQueueConcurrencyType MOC.

关于ios - 只有一个上下文的核心数据栈用 NSPrivateQueueConcurrencyType 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17507089/

相关文章:

objective-c - 是否可以使用 pop 为 NSWindows 设置动画?

objective-c - 导航器 Controller 和标签栏 Controller 同时存在?

javascript - 如何在 Windows 上运行 Node 集群?

ios - UICollectionView 加载除可见单元之外的更多单元

IOS UIActivityViewController

ios - 找不到接受字符串类型参数列表的 UIImage 类型的初始值设定项

objective-c - AFIncrementalStore 是否需要 NSMainQueueConcurrencyType 上下文?

iphone - 如何在iPhone中使用CATextLayer设置视频中的文本位置?

objective-c - 限制后台线程的 CPU 使用率

c# - lock关键字的使用c#