initWithCapacity:在NSArray中

时间:2009-10-01 09:45:17

标签: iphone

{p> initWithCapacity:NSMutableArray中声明,但我想用它来初始化NSArray。我有什么解决方案吗?

3 个答案:

答案 0 :(得分:10)

由于NSArray对象是不可变的(不能更改它们包含的对象),因此调整NSArray s的容量没有用。

容量是阵列可以包含的对象数,而无需重新分配内存。它仅用于优化。

答案 1 :(得分:6)

使用NSArray初始化initWithCapacity:是没有意义的,因为您随后无法添加对象。没有任何对象的NSArray的实际容量为0.您真正想要实现的目标是什么?

答案 2 :(得分:5)

只需使用NSMutableArray制作initWithCapacity:,填写内容,然后从中NSArray

您可以使用:

NSArray *_immutableArray = [_mutableArray copy];
...
[_immutableArray release];

或者:

NSArray *_immutableArray; 
[_immutableArray initWithArray:_mutableArray];
...
[_immutableArray release];

或者:

NSArray *_immutableArray = [NSArray arrayWithArray:_mutableArray];