15

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

4

1 回答 1

35

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

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

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

于 2009-08-11T06:40:26.303 回答