为核心数据写入创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理一个私人队列。 使用performBlock
或performBlockAndWait
在私有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 }); }