【发布时间】:2012-08-12 18:56:29
【问题描述】:
我将NSOperationQueue 设置为NSOperationQueueDefaultMaxConcurrentOperationCount。它充满了NSOperation 对象(到目前为止没有什么奇怪的)。我将NSOperation 子类化以执行一些后台任务。
- 从互联网下载数据。
- 解析数据以便我阅读。
-
创建一个 NSManagedObject:
[NSEntityDescription insertNewObjectForEntityForName:@"Channel" inManagedObjectContext:context];
-
将其与上下文一起保存。
[managedObjectContext 保存:&错误]
我喜欢这一切都发生在后台,这样 UI 就不会被阻塞。我读了this article about concurrency with core data,据我所知。最好的方法是在每个NSOperation 中创建一个新的NSManagedObjectContext,但共享相同的持久存储协调器。
这很容易做到,但是,在保存文档中所说的上下文时,这样做很容易出错。所以我的问题如下:
如果我在 NSOperationQueue 中运行不同的操作,这些操作会在保存托管对象上下文的同时相互干扰吗?还是等到保存完成再执行下面的操作?
我可以安全地将上下文保存在 NSOperation 中吗?或者这真的是不好的做法?
我希望有人能对这件事有所了解,因为我现在真的很困。
【问题讨论】:
标签: xcode multithreading core-data nsmanagedobject nsoperation