15

我有一个for循环。在那个循环中,我想NSArray用一些对象填充一个。但我没有看到任何可以让我这样做的方法。我提前知道有多少物体。我想避免NSMutableArray,因为有些人告诉我,与NSArray.

我有这样的事情:

NSArray *returnArray = [[NSArray alloc] init];
for (imageName in imageArray) {
    UIImage *image = [UIImage imageNamed:imageName];
    //Now, here I'd like to add that image to the array...
}

我查看了文档NSArray,但是如何指定其中要包含多少个元素?还是我必须真正使用NSMutableArray它?

4

4 回答 4

27

是的,您需要使用NSMutableArray

int count = [imageArray count];
NSMutableArray *returnArray = [[NSMutableArray alloc] initWithCapacity:count];
for (imageName in imageArray) {
    UIImage *image = [UIImage imageNamed:imageName];
    [returnArray addObject: image];
    ...
}

编辑 - 声明已修复

于 2009-05-08T12:40:50.730 回答
4

您需要为此使用NSMutableArray,因为添加是突变,而NSArray是不可变的。

您可以将 a 填充NSMutableArrayNSArray之后(请参阅此处进行讨论),但您不会NSArray很快将项目添加到常规旧的。

于 2009-05-08T12:40:08.970 回答
3

现在是使用NSMutableArray的好时机吗?

我知道你提到你想避免它,但有时这样的事情是有原因的。

于 2009-05-08T12:37:43.343 回答
2

我建议仅在您知道NSMutableArray 导致性能下降时才进行优化,但如果是这样,您始终可以在填充可变数组后从可变数组创建静态数组。这取决于性能下降是由您随后使用NSMutableArray或仅由创建它引起的。

我的猜测是,这不会成为您应用程序的性能瓶颈。

于 2009-05-09T18:14:28.420 回答