为核心数据写入创build后台线程

我试图重新创build本cocoa系统文章( http://www.cocoanetics.com/2012/07/multi-context-coredata/ )中描述的三层核心数据系统。 我遇到的问题是在自己的后台线程上创build私有MOC。 我没有太多的multithreading经验,应该如何在目标c中完成。 我一直在阅读文章,并试图如何正确地实施这个方法,但我终于承认,我不知道我在做什么。

要创build这种方法,我需要创build一个NSThread并进行pipe理吗? 还是有一种更简单的方式,我不理解?

在后台执行核心数据操作的最简单方法是创buildNSPrivateQueueConcurrencyType的托pipe对象上下文。 这种types的MOC创build和pipe理一个私人队列。 使用performBlockperformBlockAndWait在私有MOC上执行操作可确保使用正确的队列。

有关详细信息和示例,请参阅OS X v10.7和iOS 5.0的“ 核心数据发行说明”中的“ 托pipe对象上下文的并发性支持” 。

我只能推荐观看来自WWDC 2011会议303“有关核心数据在iOS上的新内容”的video或幻灯片,其中解释了核心数据并发性。

在iOS中pipe理线程是非常基本的

要在后台运行一些东西,你可以这样做:

 - (void)someMethod { // method is called on main thread normally dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ .... // here things are run in background }); } 

要回到任何地方的主线程,请执行以下操作:

 - (void)someOtherMethod { // method is called on background thread dispatch_async(dispatch_get_main_queue(), ^{ ... // here things are on main thread again }); }