另一个iPhone内存管理问题

时间:2010-10-05 18:57:55

标签: iphone objective-c memory-management

所以说我从核心数据请求中得到结果:(这是示例代码)

按下按钮事件:

NSMutableArray *results = [[myContext executeFetchRequest:request error:&error] mutableCopy];
myObject = (MyObject *)[mutableFetchResults1 objectAtIndex:0]; // assume that there's something in there

现在我希望myObject在我的程序中保持一段时间......即,'myObject'中包含的信息将用于其他事件等。所以我在我的.h文件中定义了它。

我的问题是,在这种情况下如何管理内存。我是否需要在某个时候“释放”结果或myObject?乐器说这是泄漏...但你有没有看到任何问题?

2 个答案:

答案 0 :(得分:1)

你可以从结果中对0索引对象进行保留,如下所示:

myObject = [(MyObject *)[mutableFetchResults1 objectAtIndex:0] retain];

然后你就可以在那之后发布结果,myObject就会徘徊。然后,您将需要释放myObject。

答案 1 :(得分:1)

mutableCopy(和copy)返回一个保留计数为1的对象 - 您是返回对象的所有者。所以你必须在某个时候发布结果。

myObject由结果数组保留。您不需要明确释放它,因为您不是它的拥有者。

如果您只对myObject感兴趣,我会保留它并尽快发布结果。