如何将NSMutableArray转换为NSArray?

如何在Objective-C中将NSMutableArray转换为NSArray?


NSArray *array = [mutableArray copy];

Copy制作不可变的副本。 这非常有用,因为Apple可以进行各种优化。 例如,将copy发送到不可变数组只保留该对象并返回self

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


NSMutableArrayNSArray一个子类,所以你不需要转换,但是如果你想确保数组不能被修改,你可以用以下方法创建一个NSArray ,具体取决于你是否希望它自动释放:

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

/* Autoreleased array */
NSArray *array = [NSArray arrayWithArray:mutableArray];

编辑:由GeorgSchölly提供的解决方案是一种更好的方式,它更加清洁,特别是现在我们拥有ARC并且甚至不需要调用autorelease。


我喜欢两个主要解决方案:

NSArray *array = [NSArray arrayWithArray:mutableArray];

要么

NSArray *array = [mutableArray copy];

我在他们看到的主要区别 是他们在mutableArray为零时的行为

NSMutableArray *mutableArray = nil;
NSArray *array = [NSArray arrayWithArray:mutableArray];
// array == @[] (empty array)

NSMutableArray *mutableArray = nil;
NSArray *array = [mutableArray copy];
// array == nil
链接地址: http://www.djcxy.com/p/81897.html

上一篇: How do I convert NSMutableArray to NSArray?

下一篇: Is there a way to iterate over a dictionary?