Cocoa 如何释放NSManagedObject对象?

Cocoa 如何释放NSManagedObject对象?,cocoa,core-data,Cocoa,Core Data,如何释放NSManagedObject对象? 当我使用-deleteObject:在NSManagedObjectContext中删除一个对象(NSManagedObject)并执行保存操作时,但我没有看到,它被释放了。 我需要关心NSManagedObject内存管理吗 我在这个项目中使用了ARC,托管对象覆盖了dealloc方法。代码看起来像 (无效)解除锁定{ NSLog(@“已发布托管对象”) } 我从上下文中删除一个托管对象,然后保存,表明我不需要这个托管对象,如果上下文不释放它,

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

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

  • (无效)解除锁定{ NSLog(@“已发布托管对象”) }
我从上下文中删除一个托管对象,然后保存,表明我不需要这个托管对象,如果上下文不释放它,是否浪费内存


提前感谢。

在一个典型的场景中,您从上下文中获取一个托管对象,然后删除它,然后保存上下文,当然,只要不向其发送retain,就不需要释放托管对象


PS:如果您的问题动机是学习,这很好,但我建议您转到ARC。

简短回答-核心数据将管理NSManagedObject对象的内存

更长的回答-即使核心数据已被告知从上下文中删除对象,您仍然可以在某个地方保留对(现在无效)对象的引用,例如在包含原始获取结果的数组中,或者作为属性。当您使用ARC时,这些对象最终将被释放,它们对您的对象的任何引用也将被释放,但由于这个原因,当您调用
deleteObject:
时,您可能无法立即看到dealloc


如果您没有性能或内存问题,我不会太担心。如果您是,那么可能值得一看的
refreshObject:mergeChanges:
方法作为起点。

但是您覆盖了dealloc!您刚刚拒绝了操作系统解除锁定对象的机会。在您的覆盖中,请致电[super Dealoc]并再次测试。