2011-04-20 67 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