发布一个数组也会发布它的元素吗?

时间:2012-03-28 15:24:21

标签: objective-c

我分配了NSMutableArray,并添加了alloced的对象。在我的数组上调用release也会释放其中的元素,或者我是否必须先手动释放每个元素?

2 个答案:

答案 0 :(得分:2)

当该集合解除分配(与发布时不同)时,会释放obj-c集合中的对象。因此,在实践中,如果您在集合中添加对象,集合将管理其对象所有权,而您无需为其元素添加额外的版本。

答案 1 :(得分:2)

查看Collections Programming Topics指南。更具体地说, Arrays部分和Array Fundamentals主题:

  

当托管内存环境中的阵列解除分配时,每个阵列都是如此   元素被发送一条释放消息。

因此,如果释放数组会使其保留计数为0,那么它就是 要取消分配,此时对象将收到release消息。 否则,释放数组只会减少其保留计数 常规对象。

此外,当您在数组中放置对象时,它们会收到retain消息 该指南解释道。