2010-08-12 55 views

回答

0

核心數據遵循相同的規則,在Objective-C的任何其他對象,除了有輕微的扭曲的建議。

核心數據將在內部決定何時釋放對象,因此,即使您已完成一個對象並且已經釋放了所有對該對象的引用,它也可能在此之後停留,具體取決於核心數據決定如何處理它。

另外,當一個NSManagedObject被加載到內存中時,整個對象可能不一定被加載。 Core Data默認會加載對象的基本結構,但不會加載其數據或關係。這使初始內存佔用非常低。當你訪問一個屬性時,整個實例將被完全實現。

簡短的回答是:只要你遵循保留版本規則,你就不用擔心核心數據的內存管理。

0

它們在保留計數= 0時被釋放。

除非您以某種方式擁有它們,否則它們會在autorelease池刷新時消失。這假設你正在創建它們... insertNewObjectForEntityForName:inManagedObjectContext:

託管對象上下文仍然有記錄,但NSManagedObject服從相同的保留/釋放規則作爲任何其他對象。將NSManagedObject看作底層數據的運行時容器。

如果你想保持他們的保持使用一個NSArrayController的OS X或UIKit的一個的NSMutableSet是

+0

謝謝 - 這正是我正在做的。我只是不知道是否說1000多個實體被創建,有些會因爲內存限制或類似的東西而被釋放,甚至在我還沒有進入[池版本]之前。 – Slee 2010-08-12 14:16:22

相關問題