我在后台线程上从Web服务导入一堆数据,我随机遇到了错误的访问问题,我相信主要来自分配关系。
我想知道我创建和保存的新实体需要多长时间?
答案 0 :(得分:0)
当保留计数= 0时,它们被释放。
除非你对它们拥有所有权,否则它们会在自动释放池刷新时消失。假设您使用... insertNewObjectForEntityForName:inManagedObjectContext:
托管对象上下文仍将具有记录,但NSManagedObject遵循与任何其他对象相同的保留/释放规则。将NSManagedObject视为基础数据的运行时容器。
如果你想保留它们,可以使用OSA的NSArrayController或UIKit的NSMutableSet作为建议
答案 1 :(得分:0)
核心数据遵循与Objective-C中任何其他对象相同的规则,除非有轻微的扭曲。
核心数据将在内部决定何时释放对象,因此即使你完成了一个对象并且已经释放了所有对它的引用,它也可能在此之后保留,具体取决于Core Data决定使用它做什么
此外,当NSManagedObject
加载到内存中时,可能不一定会加载整个对象。默认情况下,Core Data将加载对象的基本结构,但不会加载其数据或关系。这使初始内存占用空间非常低。当您访问某个属性时,整个实例将完全实现。
简短的回答是:只要遵循保留发布规则,您就不必担心使用Core Data进行内存管理。