【问题标题】:Do removeAllObjects and release of an NSMutableArray both have the same functionality?removeAllObjects 和 NSMutableArray 的发布是否都具有相同的功能?
【发布时间】:2011-03-10 23:59:53
【问题描述】:

我写了下面这行代码:

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

这会分配一些内存。我的问题是,我们以后如何释放这个内存,无论是使用removeAllObjects方法还是[数组释放]?

这两种方法是否具有相同的功能?

【问题讨论】:

    标签: objective-c nsmutablearray release


    【解决方案1】:

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

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

    【讨论】:

    • 那么为什么当我调用 removeAllObjects 时我的 NSMutableArray 会被释放?
    • 在这种情况下不应发布。可能还有其他问题。可以发一些代码让我们试一试吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 2019-06-01
    • 1970-01-01
    • 2020-11-20
    • 2013-07-14
    • 1970-01-01
    相关资源
    最近更新 更多