我需要使用预定数量的零值对象构建一个数组,稍后将对其进行更改。
我这样做:
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 :(得分:0)
不,nil
未放置在数组的末尾。事实上,nil
不是Cocoa中集合的有效成员。它仅用作参数列表的分隔符。您发布的两个变体之间没有实际差异(除了您在第一个中使用的autorelease
,当然在第二个示例中省略)。
我怀疑第一个稍快一点(并且你可以使用initWithCapacity:
来优化第二个)但是由于数组的小尺寸,它不会产生明显的差异。
请注意,您还可以使用[NSNull null]
来指示集合中的占位符对象。这取决于您的具体用例,如果这比使用数字0更好。