Cocoa 如何释放NSManagedObject对象?
如何释放NSManagedObject对象? 当我使用-deleteObject:在NSManagedObjectContext中删除一个对象(NSManagedObject)并执行保存操作时,但我没有看到,它被释放了。 我需要关心NSManagedObject内存管理吗 我在这个项目中使用了ARC,托管对象覆盖了dealloc方法。代码看起来像Cocoa 如何释放NSManagedObject对象?,cocoa,core-data,Cocoa,Core Data,如何释放NSManagedObject对象? 当我使用-deleteObject:在NSManagedObjectContext中删除一个对象(NSManagedObject)并执行保存操作时,但我没有看到,它被释放了。 我需要关心NSManagedObject内存管理吗 我在这个项目中使用了ARC,托管对象覆盖了dealloc方法。代码看起来像 (无效)解除锁定{ NSLog(@“已发布托管对象”) } 我从上下文中删除一个托管对象,然后保存,表明我不需要这个托管对象,如果上下文不释放它,
- (无效)解除锁定{ NSLog(@“已发布托管对象”) }
提前感谢。在一个典型的场景中,您从上下文中获取一个托管对象,然后删除它,然后保存上下文,当然,只要不向其发送retain,就不需要释放托管对象
PS:如果您的问题动机是学习,这很好,但我建议您转到ARC。简短回答-核心数据将管理NSManagedObject对象的内存 更长的回答-即使核心数据已被告知从上下文中删除对象,您仍然可以在某个地方保留对(现在无效)对象的引用,例如在包含原始获取结果的数组中,或者作为属性。当您使用ARC时,这些对象最终将被释放,它们对您的对象的任何引用也将被释放,但由于这个原因,当您调用
deleteObject:
时,您可能无法立即看到dealloc
如果您没有性能或内存问题,我不会太担心。如果您是,那么可能值得一看的
refreshObject:mergeChanges:
方法作为起点。但是您覆盖了dealloc!您刚刚拒绝了操作系统解除锁定对象的机会。在您的覆盖中,请致电[super Dealoc]并再次测试。