2013-03-05 28 views
1

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

E.g.一个VC根据名字获取并且只想在表格视图中显示名字,因此只保存来自内存中获取的NSManagedObjects的名称数据,而不是对象的其余部分。

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

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

+0

”一个VC根据名字获取并且只想在表视图中显示名字,因此只保存来自内存中获取的NSManagedObjects的名称数据,而不是对象的其余部分。“你可以发布一些示例代码?有点难以确定你在描述什么。 – 2013-03-05 17:17:11

回答

1

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

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