【发布时间】:2011-03-10 23:59:53
【问题描述】:
我写了下面这行代码:
NSMutableArray *array=[[NSMutableArray alloc]init];
这会分配一些内存。我的问题是,我们以后如何释放这个内存,无论是使用removeAllObjects方法还是[数组释放]?
这两种方法是否具有相同的功能?
【问题讨论】:
标签: objective-c nsmutablearray release
我写了下面这行代码:
NSMutableArray *array=[[NSMutableArray alloc]init];
这会分配一些内存。我的问题是,我们以后如何释放这个内存,无论是使用removeAllObjects方法还是[数组释放]?
这两种方法是否具有相同的功能?
【问题讨论】:
标签: objective-c nsmutablearray release
当您将一个对象添加到数组中时,该对象的保留计数将增加 1。当您从数组中删除该对象时,保留计数将减少 1 以平衡它。但是如果释放数组,所有对象都会自动收到释放消息。所以在释放数组之前不需要调用removeAllObjects。
从技术上讲,这两种方法并不相同。如果调用 removeAllObjects,数组将变为空,所有对象都会收到释放消息,但数组本身仍未释放。调用 release 时,数组将被释放。
【讨论】: