NSManagedObjectContext的-reset方法的文档令人困惑......
所有接收者的管理对象都是 “忘了。”如果你使用这种方法, 你也应该确保你 丢弃对任何托管的引用 使用接收器获取的对象, 因为之后它们将无效。
那是什么意思?当我从持久存储中获取任何对象,然后重置我的上下文时,我将如何“丢弃引用”?我为什么要这样做?
答案 0 :(得分:1)
如果从代码中的某个位置获取NSManagedObject,那么在其他地方重置上下文,现在您更改ManagedObject并尝试通过上下文将其保留到存储(重置并且没有引用它会使你的应用程序崩溃。
上下文是一个“便笺簿”,它可以“访问”商店中的所有内容,但它只处理/已经绘制,在应用程序启动后通过它检索的对象。 当您在NSManagedObject中读取时,上下文(据我所知)制作副本并跟踪您对其所做的所有更改,在您保留之前它对商店不执行任何操作。这就是核心数据中的内存管理和undo-redo等的简单实现。
因此,重置上下文也会抛弃这些更改,并且没有任何内容可以存储到商店。
编辑://添加
参考你不应该太注意。您不必释放它等,Core Data将负责这一点,只是不要引用ManagedObject,自动释放池将丢弃它。