initWithCapacity:
在NSMutableArray
中声明,但我想用它来初始化NSArray
。我有什么解决方案吗?
答案 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];