【发布时间】:2017-10-28 09:00:45
【问题描述】:
我可以拥有一个由 Multiple NSOperation 访问的私有托管对象上下文吗?
我有 2 两个选项:
每个 NSOperation 都有一个托管对象上下文。 即如果有 100 个 NSoperation 100 上下文将被创建。
拥有一个上下文和多个 NSOperation。
即单个上下文和 100 个访问它的 NSOperations。
这可能是一个更好的选择。
【问题讨论】:
-
你的 NSOperationQueue 的 maxConcurrentOperationCount 是多少?您的 NSOperations 可以同时执行吗?单个 NSOperation 完成的工作量是多少(要保存的对象数量或完成工作的秒数)?
-
1. maxConcurrentOperationCount 当前保持默认值。 2. 单个 NSOperation 完成的工作量是多少:- 与服务器对象相比,从核心数据中获取单个对象,然后基于该对象和文件上传或下载并写入磁盘。
-
正如您所描述的,您不会在单个操作中将一堆新数据保存到 CoreData 中。因此,您可以拥有单个上下文并从中获取任何对象。为避免并发问题,您可以使用 performAndWait 函数。
-
好的,谢谢 Sander,所以你建议我可以选择 2 个选项。许多人建议选择选项 1,包括 Marcus Zarra,从不共享 2 个线程和子上下文之间的上下文很便宜。使用一次,然后扔掉。我觉得这有点过头了,因为我一次只处理一个对象。我仍然无法决定更好的解决方案。任何人都可以遮光,以防我误解了
-
好的,我会在下面发布我的答案,以便您仔细查看。
标签: ios objective-c core-data nsmanagedobjectcontext nsoperation