1

如果多个 VC 使用不同的获取限制从数据库中获取数据,NSManagedObjects 是如何在内存中管理的。

例如,一个 VC 基于名称获取,并且只想在 tableview 中显示名称,因此仅在内存中保存来自获取的 NSManagedObjects 的名称数据,而不是对象的其余部分。

这允许将选定的数据保存在内存中,当多个 VC 一次保存相同的数据时,如何使用内存?每个引用都会有这些数据的副本,还是 NSManagedObjects 的支持数据是 Core-Data 中的单个条目?

如果是这样,Core-Data 是使用虚拟内存映射来按需读取这些单个实例,还是将实际数据作为副本加载到内存中?

4

1 回答 1

1

不会有任何对象的副本。只要您使用相同的商店/上下文,就只有一个副本(称为唯一性的功能)。还有一种称为故障的东西,它有助于减少核心数据中的内存占用。
故障意味着具有未初始化 iVars.Fault 的托管对象的实例可以通过多种方式触发(即已初始化 ivars)。(在人际关系中特别有用)。在这里查看更多信息:https ://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFaultingUniquing.html

但据我了解,您不能只将托管对象的一个​​属性(如名称数据)保留在内存中。整个对象将在内存中。

于 2013-03-05T18:41:03.557 回答