2013-03-05 55 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

但是根據我的理解,你不能只在內存中保留一個屬性(如名稱數據)的託管對象。整個對象將在內存中。 「