NSArray是否复制对象?

时间:2009-08-11 06:39:07

标签: objective-c memory-management nsarray

当我使用+ NSArray制作[NSArray arrayWithObjects:]时,是否会复制这些对象?如果我在将对象添加到数组后释放它们,我会遇到问题吗?

1 个答案:

答案 0 :(得分:35)

不,它不会复制它们。它保留了它们。是的,您可以在将对象添加到阵列后安全地释放它们。

The docs一如既往,非常清楚地说明这一点:

  

Arrays维护对其内容的强引用 - 在托管内存环境中,每个对象在将id添加到数组之前接收保留消息,并在从数组中删除数据或者释放数组时接收释放消息。如果您想要一个具有不同对象所有权语义的集合,请考虑使用CFArray Reference,NSPointerArray或NSHashTable。