4

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

要创建这种方法,我是否需要创建一个 NSThread 并对其进行管理?还是有一种我不理解的更简单的方法?

4

2 回答 2

5

在后台执行 Core Data 操作的最简单方法是创建NSPrivateQueueConcurrencyType. 这种类型的 MOC 创建和管理私有队列。在私有 MOC 上使用performBlockperformBlockAndWait执行操作可确保使用正确的队列。

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

我只能推荐观看 WWDC 2011 Session 303 “What's New in Core Data on iOS”的视频或幻灯片,其中解释了 Core Data 并发性。

于 2012-11-26T23:00:11.650 回答
-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
    });
}
于 2012-11-26T19:37:42.643 回答