当我做一个 NSArray 使用+ [NSArray arrayWithObjects:] ,是否复制这些对象?如果在将对象添加到数组后释放这些对象,我会遇到问题吗?
NSArray
[NSArray arrayWithObjects:]
不,它不会复制它们。它保留了它们。是的,将对象添加到数组后,可以安全地释放这些对象。
The docs 像往常一样,把这句话讲得很清楚:
数组在托管内存环境中保持对其内容的强引用,每个对象在将其ID添加到数组之前都会收到一条保留消息,从数组中删除或取消分配数组时会收到一条释放消息。如果需要具有不同对象所有权语义的集合,请考虑改用cfarray-reference、nspointerray或nshashtable。