CoreData 和 NSManagedObject 上下文 - 私有与主要

gog*_*elj 2 core-data objective-c nsmanagedobjectcontext swift

使用私有上下文触发 CoreData (CRUD) 操作与使用performBlockdispatch_async 后台队列中的主上下文触发此类操作之间有区别吗?

是否只是不应该在后台线程中使用主上下文的情况?

苹果文档的链接在这里

Mar*_*rra 5

永远不应该在后台线程中使用主队列上下文。这违反了线程限制规则。

主队列上下文应该只从主队列(UI 队列/线程)或从performBlock. 如果您需要执行与 UI 无关的任务,那么您应该创建一个私有队列上下文并通过performBlock.

要确认您的 Core Data 线程正确,您可以打开-com.apple.CoreData.ConcurrencyDebug 1运行时设置。