如何释放NSManagedObject对象?

时间:2013-06-12 13:50:24

标签: cocoa core-data

如何发布NSManagedObject对象? 当我使用 - deleteObject:删除NSManagedObjectContext中的对象(NSManagedObject)并执行保存操作时,但我没有看到,它已被释放。 我需要关心NSManagedObject内存管理吗?

我在这个项目中使用ARC,而托管对象覆盖了dealloc方法。代码看起来像

  • (void)dealloc {     NSLog(@“管理对象发布”) }

我从上下文中删除了一个托管对象,然后保存表明我不需要这个托管对象,如果上下文没有释放它是否浪费内存?

提前致谢。

2 个答案:

答案 0 :(得分:1)

简短回答 - Core Data将管理NSManagedObject对象的内存。

更长的答案 - 即使已经告知Core Data从上下文中删除对象,您仍然可以在某处保留对(现在无效)对象的引用,比如在包含原始获取结果的数组中,或者也许是一个财产。当您使用ARC时,这些对象最终会被释放,因此它们对您的对象的任何引用都会被释放,但是当您因此原因调用deleteObject:时,您可能不会立即看到dealloc。

如果您没有性能或内存问题,我不会太担心它。如果您那么可能值得以NSManagedObjectContextrefreshObject: mergeChanges:方法为出发点。

答案 1 :(得分:0)

在从上下文中获取托管对象的典型场景中,然后将其删除然后保存上下文,当然,只要您不向其发送保留,就不需要释放托管对象。 / p>

PS:如果你的问题动机是学习那么好,但我建议你转到ARC。