如果多个VC使用不同的提取限制从数据库中获取数据,NSManagedObjects如何在内存中进行管理。
E.g。一个VC基于名称提取,只想在tableview中显示名称,因此只保存内存中提取的NSManagedObjects的名称数据,而不是对象的其余部分。
这允许选定的数据保存在内存中。当多个VC同时保存在同一数据上时,如何使用内存?是否会为每个引用提供此数据的副本,或NSManagedObjects的支持数据是Core-Data中的单个条目吗?
如果是这样,Core-Data是否使用虚拟内存映射来按需读取这些单个实例,还是将实际数据作为副本加载到内存中?
答案 0 :(得分:1)
不会有任何副本的副本。只要您使用相同的商店/上下文,就只有一个副本(称为uniquing的功能)。还有一种称为错误的东西有助于减少核心数据中的内存占用。
故障是指具有未初始化的iVars的托管对象的实例。故障可以通过多种方式触发(即初始化)。 (特别适用于人际关系)。点击此处了解更多信息:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdFaultingUniquing.html
但根据我的理解,您不能只在内存中保留托管对象的一个属性(如名称数据)。整个对象将在内存中。