【发布时间】:2011-06-24 15:17:53
【问题描述】:
我对 Core Data 还是很陌生,我试图理解为什么它需要传递 NSManagedObjectContext。据我了解,需要传递上下文,以便多个线程不会影响同一个上下文,但我也觉得这种模式有时被认为是一种反模式,如 here 所述。
Core Data 理论上能否以线程安全的方式实现,从而避免使用这种模式?其他 ORM(例如 Ruby 的 ActiveRecord)如何避免这种模式?例如,CoreData 不能实现每个 NSManagedObject 的保存方法,例如在这个extension 中。这个轻量级框架不处理多线程,但是 NSManagedObjects 不能使用某种内部 GCD 队列来支持它,并且它们不会公开内部上下文吗?
抱歉,如果我遗漏了什么重要的东西。
【问题讨论】:
-
+1 好问题。我知道大上下文通常被视为一种反模式,但在我看来,Apple 并没有像一个初级程序员通过屋顶瓦片只是为了冲进浴室厕所那样滥用它。
NSManagedObjectContext确实管理了很多事情,但通过方法而不要求您的所有实体一次可用或共享同一模型的 2 个实体相互了解。
标签: objective-c multithreading ios core-data nsmanagedobjectcontext