我如何将NSMutableArray转换为NSArray?
NSMutableArray
是 NSArray
的子类,因此您不总是需要进行转换,但是如果您想确保数组无法被修改,可以通过以下方式之一创建 NSArray
,具体取决于您想要自动释放还是不释放:
/* Not autoreleased */ NSArray *array = [[NSArray alloc] initWithArray:mutableArray]; /* Autoreleased array */ NSArray *array = [NSArray arrayWithArray:mutableArray];
编辑:Georg Schölly 提供的解决方案是更好的做法,更加简洁,特别是现在我们有了 ARC 甚至不必调用 autorelease。
NSArray *array = [mutableArray copy];
Copy
会生成不可变的副本。这非常有用,因为 Apple 可以进行各种优化。例如,向不可变数组发送 copy
仅保留对象并返回 self
。
如果您不使用垃圾回收或 ARC,请记住 -copy
会保留对象。