2

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

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

  • (void)dealloc { NSLog(@"Managed Object Released") }

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

提前致谢。

4

2 回答 2

2

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

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

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

于 2013-06-13T00:58:17.040 回答
0

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

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

于 2013-06-12T19:45:08.283 回答