核心数据,使用什么并发模型?

时间:2015-02-07 13:42:22

标签: ios objective-c core-data concurrency

我正在开发iOS应用程序,它将从多个来源(多达数万个对象,但简单的对象,没有图像)收集大量数据,并使用核心数据将其保存到我自己的数据库中。然后我分析这些数据并将结果显示给用户。

我想知道使用主队列Nsmanagedobjectcontext是否有任何好处,或者是否足够我使用私有队列。

我还想知道有几个NSManagedObjectContext或者一个是否足够的好处是什么?

我目前使用的并发模型只有一个私有队列nsmanagedobjectcontext连接到持久性存储协调器。所有数据分析都在专用队列上执行,然后我只是将分析的数据传递给主队列以显示它。在旧设备(iPhone 4)上,当同时加载太多数据(即从外部数据库下载)时,我的应用程序有时会崩溃,这与我选择的并发模型有关吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

您目前的做法听起来不错。如果您希望主线程与数据交互,您只需要一个主线程上下文,在您的情况下,您不需要这样做。

你的内存管理实际上是无关紧要的,并且与你一次有多少事情(听起来像是一个)以及你在任何时候尝试在主内存中保留了多少个对象(听起来像很多)有关而不是将它们发送到数据存储区。这是您需要查看/工作的内容。乐器可以帮助您查看您在内存中保留的对象数量。

至少使用refreshObject:mergeChanges:调用NO进行合并更改,以排除您未使用的任何对象。

此外,请记住,您正在使用移动设备,并且处理up to tens of thousands of objects是服务器更好地处理的工作......