我有一个NSMutableArray
。我想用NSMutableArray
的for循环从那个NSMutableArray
制作一个NSArray
,我试过了,但我做不到。
您可以使用copy
方法将可变数组转换为不可变数组,而不是循环遍历数组项
NSArray *newArray = [myMutableArray copy];
copy
是一种简便的方法。如果将它发送给可变/不可变类集群的可变成员,它将返回一个不可变副本。但是,如果您将它发送给一个不可变成员,它只会返回具有另一个保留的相同对象。
还有mutableCopy
,它将返回发送到的任何内容的可变版本
返回拥有(保留)对象的行为是内存管理指南建议释放使用new
alloc
retain
或copy
(当然是在非ARC环境中)创建的对象的原因
如果您尝试使用循环是有原因的,因为您想在创建新数组之前更改数组的值,那么有几种方法可以做到这一点(循环、枚举等),但我们需要了解更多细节,然后才能向您提供建议。
不需要循环。您可以从像这样的可变数组创建一个不可变数组
NSArray *myUnMutableArray = [[NSArray alloc] initWithArray:myMutableArray];