0

尽管 ARC 显着简化了事情,但我仍然习惯于 Objective-c 中的一些内存管理细节。这是一行代码:

[song addEntriesObject:self.entry];

wheresong是一个托管对象,我通过在托管对象上下文上执行获取请求来访问它,并self.entry引用在初始化时传递给此类的实例变量,并且也是托管对象(即它是核心数据实体 - 希望我'正在正确使用该术语)。

我的问题只是这是否会导致内存管理出现任何问题,即分配self.entry给托管对象是否会阻止该实例变量被释放,因为它被核心数据或类似的东西保留。这会产生任何问题,还是核心数据不会以相同的方式维护指向对象的指针?还是我的思维过程完全走错了路?

任何关于这个主题的想法将不胜感激。

4

1 回答 1

2

牛牛,

Core Data 对象是NSObjects,因此行为相同。换句话说,内存管理没有任何变化。在您的示例中,self.entry您的实例和song.

独立于 ARC,Core Data 项可以保留大型对象图。这些可能需要修剪。该-refreshObject:mergeChanges:方法用于执行此操作。为了避免一些痛苦,您应该始终-save:在修剪图表之前使用。

安德鲁

于 2012-10-30T12:35:18.320 回答