【发布时间】:2012-08-08 02:01:28
【问题描述】:
所以我在 Cocoa 中构建了一个基于文档的应用程序并试图理解 NSManagedObjectContext。我已经阅读了 Apple 的“核心数据基础”,但无法理解它。在我的应用程序中,我创建了一个自定义 CoreDataUtility 类,以便我的所有类都可以通过以下代码行获取上下文:
MyCoreDataUtility *coreData = [MyCoreDataUtility sharedCoreDataUtility];
NSManagedObjectContext *context = [coreData context];
我从“可可是我的女朋友”网站得到这个想法。我感到困惑的是,当我运行我的应用程序并创建一个新窗口(我的文件所有者类是 NSPersistentDocument 的子类)时,如果我对新窗口上的上下文进行更改,则视图会反映旧窗口上的更改,并且以及新的。基于此,我假设两个窗口都以某种方式引用相同的上下文或至少相同的数据。
所以我的问题是:
- 我假设每次创建新窗口时都会创建一个新窗口 上下文已创建,这是正确的吗?
- 如果创建了一个新的上下文并且它们是不同的(实际上我 打印出两个上下文的内存地址,它们 地址不同)这是否与 持久存储协调器或持久对象存储(两者 这些概念在我脑海中也很模糊)?
- 如果所有文档都引用相同的上下文,我有责任 每次创建文档时都要创建一个新的上下文?
谢谢大家!
【问题讨论】:
标签: objective-c cocoa nsmanagedobjectcontext