15
当我使用+ [NSArray arrayWithObjects:]
制作NSArray
时,它是否复制这些对象?如果我在将它们添加到数组后将其释放,我会遇到问题吗?NSArray是否复制对象?
当我使用+ [NSArray arrayWithObjects:]
制作NSArray
时,它是否复制这些对象?如果我在将它们添加到数组后将其释放,我会遇到问题吗?NSArray是否复制对象?
不,它不会复制它们。它保留了它们。是的,您可以在将对象添加到数组后将它们安全释放。
The docs一如既往地拼写了这一点很清楚:
阵列保持在内容-受管理存储环境中它们的强引用,每个对象接收保留消息中的其ID被添加到该阵列之前和从数组中移除或释放数组时释放消息。如果您想要具有不同对象所有权语义的集合,请考虑使用CFArray Reference,NSPointerArray或NSHashTable。
很棒的回答。还要记住+ arrayWithObjects:返回一个无主的(“autoreleased”)数组,所以你必须保留它以避免丢失数组,但是数组中的对象与数组一样长。 – 2009-08-11 15:15:08
非常感谢!您应该知道我在发布Stack Overflow之前搜索文档(有时候,我没有抓到所有内容)。 感谢您花时间回答我的问题。 – 2009-08-11 22:41:16
感谢您的回答 - 尽管该简介不在参考文献中,但仅供参考。据我所知,整个部分都没有了。你只能通过查看子类信息和一些函数调用来推断它,主要是因为你指出了正确的方向。 – RonLugge 2011-05-10 03:08:43