2011-04-20 65 views
1

我有一个数组,我需要使用预定数量的零值对象进行构建,稍后将对其进行更改。设置数组的默认状态

我这样做是这样的:

NSMutableArray *myArray = [[[NSMutableArray alloc] initWithObjects: 
    [NSNumber numberWithInt:0], 
    [NSNumber numberWithInt:0], 
    [NSNumber numberWithInt:0], 
    . . . 
    nil] 
    autorelease]; 

但是,我有20零值占位符,我需要创造,所以我觉得这样做这样说:

NSMutableArray *myArray = [[[NSMutableArray alloc] init] autorelease]; 

for (NSUInteger x = 0; x < 20; ++x) { 
    [myArray addObject:[NSNumber numberWithInt:0]]; 
} 

在第一个例子中,nil放置在数组的末尾,而第二个则不是。这有什么不同吗?另外,以这种方式对另一方做出这种做法有什么好处?

回答

0

不,nil未放置在数组的末尾。事实上,nil不是Cocoa集合中的有效成员。它仅用作参数列表的分隔符。您发布的两个变体之间没有实际区别(当然,除了第一个使用的autorelease和第二个示例中的省略)。

我怀疑第一个稍微快一点(你可以用initWithCapacity:来优化第二个),但考虑到数组的小尺寸,它不会有明显的区别。

请注意,您也可以使用[NSNull null]来指示集合中的占位符对象。这取决于你的具体使用情况是否会比使用数字0更好。

+0

奥莱,感谢您的回应。在这种情况下,我不想使用NSNull空占位符,因为我使用对象来跟踪整数,并将其添加到前一个值中,所以零是起点。 (autorelease遗漏是一个错字,我纠正了它。) – 2011-04-20 13:08:40