核心数据实体生命周期?他们什么时候被释放?

时间:2010-08-12 13:48:35

标签: objective-c core-data

我在后台线程上从Web服务导入一堆数据,我随机遇到了错误的访问问题,我相信主要来自分配关系。

我想知道我创建和保存的新实体需要多长时间?

2 个答案:

答案 0 :(得分:0)

当保留计数= 0时,它们被释放。

除非你对它们拥有所有权,否则它们会在自动释放池刷新时消失。假设您使用... insertNewObjectForEntityForName:inManagedObjectContext:

创建它们

托管对象上下文仍将具有记录,但NSManagedObject遵循与任何其他对象相同的保留/释放规则。将NSManagedObject视为基础数据的运行时容器。

如果你想保留它们,可以使用OSA的NSArrayController或UIKit的NSMutableSet作为建议

答案 1 :(得分:0)

核心数据遵循与Objective-C中任何其他对象相同的规则,除非有轻微的扭曲。

核心数据将在内部决定何时释放对象,因此即使你完成了一个对象并且已经释放了所有对它的引用,它也可能在此之后保留,具体取决于Core Data决定使用它做什么

此外,当NSManagedObject加载到内存中时,可能不一定会加载整个对象。默认情况下,Core Data将加载对象的基本结构,但不会加载其数据或关系。这使初始内存占用空间非常低。当您访问某个属性时,整个实例将完全实现。

简短的回答是:只要遵循保留发布规则,您就不必担心使用Core Data进行内存管理。