我如何将NSMutableArray转换为NSArray?

11 浏览
0 Comments

我如何将NSMutableArray转换为NSArray?

如何在objective-c中将NSMutableArray转换为NSArray?

admin 更改状态以发布 2023年5月24日
0
0 Comments

NSMutableArrayNSArray 的子类,因此您不总是需要进行转换,但是如果您想确保数组无法被修改,可以通过以下方式之一创建 NSArray ,具体取决于您想要自动释放还是不释放:

/* Not autoreleased */
NSArray *array = [[NSArray alloc] initWithArray:mutableArray];
/* Autoreleased array */
NSArray *array = [NSArray arrayWithArray:mutableArray];

编辑:Georg Schölly 提供的解决方案是更好的做法,更加简洁,特别是现在我们有了 ARC 甚至不必调用 autorelease。

0
0 Comments

NSArray *array = [mutableArray copy];

Copy会生成不可变的副本。这非常有用,因为 Apple 可以进行各种优化。例如,向不可变数组发送 copy 仅保留对象并返回 self

如果您不使用垃圾回收或 ARC,请记住 -copy 会保留对象。

0