Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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_Nsmanagedobjectcontext - Fatal编程技术网

Ios 多托管对象上下文

Ios 多托管对象上下文,ios,objective-c,core-data,nsmanagedobjectcontext,Ios,Objective C,Core Data,Nsmanagedobjectcontext,我见过很多次人们使用许多managedObjectContext,但是除了使用Undo manager之外,使用multipleManagedObjectContext的真正原因是什么?为什么使用多个选项会有用?您能举几个例子吗?托管对象上下文不是线程安全的,因此,如果您需要对Coredata对象执行任何类型的后台工作(即长时间运行的导入/导出功能而不阻塞主UI),您将希望在后台线程上执行该操作 在这些情况下,您需要在后台线程上创建一个新的托管对象上下文,迭代coredata操作,然后将更改通知

我见过很多次人们使用许多managedObjectContext,但是除了使用Undo manager之外,使用multipleManagedObjectContext的真正原因是什么?为什么使用多个选项会有用?您能举几个例子吗?

托管对象上下文不是线程安全的,因此,如果您需要对Coredata对象执行任何类型的后台工作(即长时间运行的导入/导出功能而不阻塞主UI),您将希望在后台线程上执行该操作

在这些情况下,您需要在后台线程上创建一个新的托管对象上下文,迭代coredata操作,然后将更改通知主上下文


您可以在这里找到一个示例,说明这是如何工作的

托管对象上下文不是线程安全的,因此,如果您需要对Coredata对象执行任何类型的后台工作(即长时间运行的导入/导出功能而不阻塞主UI),您将希望在后台线程上执行该操作

在这些情况下,您需要在后台线程上创建一个新的托管对象上下文,迭代coredata操作,然后将更改通知主上下文


您可以在这里找到一个如何工作的示例

答案非常正确,但是NSManagedObjectContext确实是线程安全的,并且有更多的上下文来不阻塞UI与线程安全无关。在这种情况下,当需要更新更多上下文时,要锁定或同步的对象是持久性存储协调器。很抱歉,您的评论没有任何意义。UI性能和线程安全与后台工作有什么关系。如果您在主线程中执行长时间运行的任务,您将阻止UI,并且您的应用程序将显示为对用户无响应,因此,我有兴趣在后台做一些这方面的工作。这是明确的,众所周知的,我完全同意你的看法。问题的关键在于,这与线程安全无关,而只与性能有关。答案是正确的,但NSManagedObjectContext确实是线程安全的,拥有更多的上下文来不阻塞UI与线程安全无关。在这种情况下,当需要更新更多上下文时,要锁定或同步的对象是持久性存储协调器。很抱歉,您的评论没有任何意义。UI性能和线程安全与后台工作有什么关系。如果您在主线程中执行长时间运行的任务,您将阻止UI,并且您的应用程序将显示为对用户无响应,因此,我有兴趣在后台做一些这方面的工作。这是明确的,众所周知的,我完全同意你的看法。关键是,这件事与线程安全无关,只与性能有关。