相关疑难解决方法(0)

为什么 NSManagedObjectContext Queue 在主线程上执行?

当我向performBlock我的 MOC 类型发送消息时NSPrivateQueueConcurrencyType,如下所示:

[self.privateManagedObjectContext performBlockAndWait:^{
    if ([[NSThread currentThread] isMainThread]) {
        NSLog(@"executing on the main thread!!");        
    }
    …
}];
Run Code Online (Sandbox Code Playgroud)

我发现,默认情况下,这在主线程上执行。上述代码中的条件触发,并且问题导航器指示正在执行Thread 1NSManagedObject Queue.

这让我很困惑,因为 Apple 告诉我们“每个线程必须有自己完全私有的托管对象上下文”。鉴于类型的 MOCNSMainQueueConcurrencyType将使用主线程,它是否违反NSPrivateQueueConcurrencyType了使用主线程类型的 MOC 的线程限制?

我的代码在主线程上执行正常吗?我误解了线程限制吗?我知道队列不一定绑定到特定线程,但在这种情况下,私有 MOC 队列似乎至少应该避免主线程,如果没有单个转到线程。我有一些奇怪的错误,所以我需要弄清楚发生了什么。谢谢!

core-data ios

4
推荐指数
1
解决办法
960
查看次数

标签 统计

core-data ×1

ios ×1