具有子上下文的核心数据多线程



我刚刚开始学习核心数据。当谈到多线程时,一些博客说,在这种情况下,我们应该使用子上下文(通过创建上下文并设置其父上下文),只调用performBlock:方法。然而,其他一些博客表示,我们应该避免这种方法,因为它引入了许多错误。我刚刚开始开发一个操作大型数据库的应用程序,项目经理投票支持Core数据(而不是SQLLite)。谁能给我指路吗。我应该使用children上下文策略(从iOS5开始引入),还是有更好的方法来使用Core Data执行多线程?谢谢

我应该使用儿童上下文策略吗(从iOS 5开始引入)或者有更好的方法用核心数据执行多线程吗?

除了您提到的概念之外,托管对象上下文还内置了不带父上下文的并发支持(请参阅https://developer.apple.com/library/ios/releasenotes/DataManagement/RN-CoreData/index.html)。

如果您使用initWithConcurrencyType:创建一个,那么您可以使用performBlock:performBlockAndWait:,并且线程将为您处理,假设您遵循上面链接中概述的基本模式。父/子上下文方法可以帮助您进行同步。

这里还概述了一种基于NSOperation的方法:http://www.objc.io/issue-2/common-background-practices.html.我个人不会使用它,因为内置的API已经足够了,但这篇文章写得很好,应该会让你对正在发生的事情有一个很好的了解

如何实现这一点取决于应用程序的需求。

其他一些博客说,我们应该避免这种方法,因为它已经引入了许多错误。

我会忽略它们,专注于为自己编写干净的代码。有很多应用程序使用多线程+核心数据而没有错误。

最新更新