当我有一个NSMutableArray时,我必须释放所有对象吗?

时间:2011-07-11 09:40:07

标签: iphone objective-c ios

当我有一个带有一些自定义类对象的NSMutableArray时,声明

NSMutableArray *list = [NSMutableArray new];

我还必须释放* list中的所有对象吗?

3 个答案:

答案 0 :(得分:1)

将对象引用放入NSMutableArray会使该对象的保留计数增加,因为该数组会保留每个对象。 将release消息发送到阵列时,它也会向它引用的所有对象发送相同的消息。

因此,如果您没有将它们保留在数组上,则不应再执行任何操作。

答案 1 :(得分:0)

不,当阵列被释放时,阵列中的所有对象都会发送一条释放消息。因此,当自动释放池被释放或耗尽时,在这种情况下,列表中的所有对象都将被释放。

答案 2 :(得分:0)

如果您在NSMutableArray中添加对象,则会在该对象上调用retain。当您释放数组时,它将在所有对象上调用release,因为它在您添加时会先在对象上调用retain

因此,您无需在每个对象上明确调用release数组实例就足够release

要了解您必须遵守的内存管理的基本规则,请阅读“Memory Management Rules”。