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 吗?的主要内容,如果未能解决你的问题,请参考以下文章
NSRangeException',原因:'*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds [0 .. 1] CoreData 和 NS