removeAllObjects和NSMutableArray的发布都具有相同的功能吗?

时间:2010-07-02 08:19:09

标签: objective-c nsmutablearray release

我写了以下代码:

NSMutableArray *array=[[NSMutableArray alloc]init];

这会分配一些内存。我的问题是,我们怎样才能在以后释放这个内存,无论是使用removeAllObjects方法还是[array release]?

两种方法都具有相同的功能吗?

1 个答案:

答案 0 :(得分:15)

将对象添加到数组时,对象的保留计数将增加1.从阵列中删除该对象时,保留计数将减少1以平衡它。但是如果释放数组,则所有对象都将自动收到释放消息。因此,在释放数组之前,不需要调用removeAllObjects。

从技术上讲,这两种方法并不相同。如果调用removeAllObjects,则数组将变为空,并且所有对象都将收到释放消息,但数组本身仍未释放。当您在其上调用release时,该阵列将被释放。