我正在尝试重新创建此cocoanetics文章(http://www.cocoanetics.com/2012/07/multi-context-coredata/)中描述的三层核心数据系统。我遇到的问题是在自己的后台线程上创建私有MOC。我对多线程有很多经验,如何在目标c中完成。我一直在阅读文章并试图掌握如何正确实施这种方法,但我终于承认我不知道自己在做什么。
要创建此方法,我是否需要创建NSThread并对其进行管理?或者有一种我不理解的简单方法吗?
答案 0 :(得分:5)
在后台执行Core Data操作的最简单方法是创建NSPrivateQueueConcurrencyType
的托管对象上下文。此类型的MOC创建和管理专用队列。使用performBlock
或performBlockAndWait
在私有MOC上执行操作可确保使用正确的队列。
参见Concurrency Support for Managed Object Contexts 有关详细信息和示例,请参阅 OS X v10.7和iOS 5.0的核心数据发行说明。
我只能建议观看WWDC 2011 Session 303中的视频或幻灯片“iOS在iOS上核心数据中的新功能”,其中解释了核心数据的并发性。
答案 1 :(得分:-3)
管理线程在iOS中非常基础
要在后台运行某些内容,您需要这样:
- (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
});
}