使用属性保留/释放内存

时间:2011-11-02 21:25:52

标签: iphone memory-management

我有一个从数据管理器获取数据的方法。它看起来像这样:

- (void)GetData {
    NSArray *anArray = [datamanager GetData]; // GetData returns an autoreleased array
    self.MyDataArray = anArray;  
}

MyDataArray被声明为属性(非原子,保留)

我的问题是,函数datamanager GetData在代码的其他地方被更改,在调用GetData时为anArray返回不同的值。我对行self.MyDataArray = anArray感到困惑。因为据我所知,这将首次保留anArray,然后再次调用GetData方法,然后保留不同的anArray,依此类推。这是内存泄漏吗?如果是这样,为了不让内存泄漏,我需要做什么?感谢。

1 个答案:

答案 0 :(得分:0)

没有内存泄漏,因为被声明为retain的MyDataArray有一个实现,当你执行self.MyDataArray = anArray时,它会在保留新引用之前释放它所持有的任何引用。