如何将NSMutableArray转换为NSArray?
如何在Objective-C中将NSMutableArray转换为NSArray?
NSArray *array = [mutableArray copy];
Copy
制作不可变的副本。 这非常有用,因为Apple可以进行各种优化。 例如,将copy
发送到不可变数组只保留该对象并返回self
。
如果您不使用垃圾回收或ARC,请记住-copy
保留该对象。
NSMutableArray
是NSArray
一个子类,所以你不需要转换,但是如果你想确保数组不能被修改,你可以用以下方法创建一个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