CoreData 并发 - 我需要一个单独的 NSOperationQueue 吗?

Posted

技术标签:

【中文标题】CoreData 并发 - 我需要一个单独的 NSOperationQueue 吗?【英文标题】:CoreData concurrency - do I need a separate NSOperationQueue? 【发布时间】:2013-05-05 20:03:50 【问题描述】:

我有一个 CoreData 应用程序,其中有两个 NSNanagedContext:s 用于并发。一个用于主线程,一个用于我的后台线程。

在我的一个视图控制器中,我还有一个单独的NSOperationQueue,我这样使用它:

[self.queue addOperationWithBlock:^
    [self processDataFromDictionary:jsonObject];
    [...]

我注意到我的 NSAnagedContext 也有一个执行块方法。如果我改为写:

 [self.backgroundContext performBlock:^
    [self processDataFromDictionary:jsonObject];

这也会异步执行吗?

【问题讨论】:

【参考方案1】:

如果您的托管对象上下文是使用适当的concurrency type 创建的,则从任何其他队列调用 performBlock 将导致块在上下文自己的队列上异步执行。

【讨论】:

好的,谢谢!那么需要另一个队列来使其异步呢? 类似的东西。 Here's a decent tutorial 关于使用 ios 5 中添加的并发 API 可以采用的模式。

以上是关于CoreData 并发 - 我需要一个单独的 NSOperationQueue 吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java高并发秒杀API之高并发优化

CoreData 在一个单独的线程中

NSRangeException',原因:'*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 1] CoreData 和 NS

[NSBundle allBundles] 中未出现单独的 CoreData 模型

CoreData 并发和释放对象

CoreData 和并发:无法解释的行为