NSManagedObjectContext 的 -reset 方法的文档令人困惑......
所有接收者的管理对象都是
“忘记了。”如果你使用这个方法,
你应该确保你也
丢弃对任何托管的引用
使用接收器获取的对象,
因为之后它们将无效。
那么这意味着什么呢?当我从持久存储中获取任何对象,然后重置我的上下文时,我将如何“丢弃引用”?为什么我必须这样做?
如果您从代码中某处的存储中获取 NSManagedObject,然后在其他地方重置上下文,现在您更改 ManagedObject 并尝试通过上下文将其持久化到存储(已重置并且没有对任何对象的引用)它会让你的应用程序崩溃。
上下文是一个“便笺簿”,它可以“访问”商店中的所有内容,但它只处理/绘制了应用程序启动后通过它检索的对象。
当您读取 NSManagedObject 时,上下文(据我所知)会创建一个副本并跟踪您对其所做的所有更改,在您保留它之前它不会对存储执行任何操作。这就是核心数据内存管理和撤消重做等轻松实现的原因。
因此,重置上下文也会丢弃这些更改,并且没有任何内容可以持久保存到存储中。
编辑://添加
您不必太关注该参考。您不必释放它或类似的东西,Core Data 会处理这个问题,只是不要引用 ManagedObject,自动释放池会丢弃它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)