-4

我有一个NSMutableArray. 我想用我试过的 for 循环来做一个NSArray, 但我不能这样做。NSMutableArrayNSMutableArray

4

2 回答 2

7

copy您可以使用以下方法将可变数组转换为不可变数组,而不是遍历数组项

NSArray *newArray = [myMutableArray copy];

copy是一种方便的方法。如果将它发送给可变/不可变类集群的可变成员,它会返回一个不可变副本。但是如果你把它发送给一个不可变的成员,它只会返回同一个对象和另一个保留。

还有mutableCopy一个将返回它发送到的任何内容的可变版本。

返回拥有(保留)对象的行为是内存管理指南建议释放使用new alloc retainor copy(当然是在非 ARC 环境中)创建的对象的原因

如果您尝试使用循环是有原因的,因为您想在创建新数组之前更改数组的值,那么有几种方法可以做到这一点(循环、枚举等),但我们会在我们为您提供建议之前,需要了解更多详细信息。

于 2012-08-26T10:12:08.627 回答
5

无需循环。您可以像这样从可变数组创建一个不可变数组

NSArray *myUnMutableArray = [[NSArray alloc] initWithArray:myMutableArray];
于 2012-08-26T10:07:47.943 回答