使用performBlock
触发CoreData(CRUD)操作与私有上下文并使用dispatch_async后台队列中的主上下文触发此类操作之间是否存在差异?
是不是一个人不应该在后台线程中使用主要上下文?
指向apple docs的链接是here。
答案 0 :(得分:3)
您应该永远在后台线程中使用主队列上下文。这违反了线程限制规则。
主队列上下文应该只能从主队列(UI队列/线程)或performBlock
访问。如果您需要执行非UI相关任务,则应创建专用队列上下文并通过performBlock
访问它。
要确认您的Core Data线程是否正确,可以打开-com.apple.CoreData.ConcurrencyDebug 1
运行时设置。