Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据,使用什么并发模型?_Ios_Objective C_Core Data_Concurrency - Fatal编程技术网

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

Ios 核心数据,使用什么并发模型?,ios,objective-c,core-data,concurrency,Ios,Objective C,Core Data,Concurrency,我正在开发一款iOS应用程序,它将从多个来源收集大量数据(多达数万个对象,但简单的对象,没有图像),并使用核心数据将其保存到我自己的数据库中。然后,我分析这些数据并将结果显示给用户 我想知道使用主队列Nsmanagedobjectcontext是否有好处,或者使用私有队列是否足够 我还想知道拥有多个NSManagedObjectContext的好处是什么,或者一个是否足够 我当前使用的并发模型只有一个专用队列nsmanagedobjectcontext连接到持久存储协调器。所有的数据分析都在私有

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

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

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

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


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

你的内存管理实际上是不相关的,它更多地与你一次有多少事情(听起来像一件)和你在任何时候试图在主内存中保存多少对象(听起来像很多)联系在一起,而不是把它们错放到数据存储中。这就是你需要看/做的。仪器可以帮助您查看内存中保存了多少对象

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

另外,请记住,您正在移动设备上工作,处理多达数万个对象是一项由服务器更好地处理的工作