设置数组的默认状态

时间:2011-04-20 12:49:52

标签: objective-c arrays xcode

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

我这样做:

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位于数组的末尾,而第二个则不是。这有什么不同吗?另外,这样做的另一种方式是否有益处呢?

1 个答案:

答案 0 :(得分:0)

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

我怀疑第一个稍快一点(并且你可以使用initWithCapacity:来优化第二个)但是由于数组的小尺寸,它不会产生明显的差异。

请注意,您还可以使用[NSNull null]来指示集合中的占位符对象。这取决于您的具体用例,如果这比使用数字0更好。