2011-12-20 37 views
2

如果我在NSMutableArray中存儲等於0的NSNumber,那麼它將被解釋爲nil並導致count方法的問題?可變數組中的NSNumber = 0

+0

你有沒有想到這一點。我知道下面的答案是正確的。但是如果你親眼看到了這一點,那麼存儲NSNumber,然後創建一個NSArray,在運行時將該數組的值減半,這是不可思議的。我永遠不會想到這是事實,但這正是運行時所做的。 – cynistersix 2013-07-25 23:12:02

+0

下面的答案是正確的。 IDE搞砸了,並沒有刷新觀看值。 – cynistersix 2013-07-25 23:18:21

回答

2

不,您必須區分對象ID本身和內容。設置爲0的NSNumber的內容很可能爲零,但所述對象的id實際上是實際地址。

例如,對象ID 0x2222可能看起來像這樣在內存中(非常簡化):

  +--------+ 
0x2222 --> | 0x0000 | 
      +--------+ 

你可以看到對象ID 零,但真正的價值。該對象的內容爲零,但與對象ID無關。

可變數組中出現的內容是對象的id值,而不是這些對象的內容。

5

它會增加數組的數量。
[NSNumber numberWithInt:0]
是一個對象,不是零。

此外,您不能添加零到數組

[mutableArray addObject:anObject]; 

引發NSInvalidArgumentException如果anObject爲零。

1
NSMutableArray *a = [NSMutableArray array]; 
[a addObject:[NSNumber numberWithInt:0]]; 
NSLog(@"count: %d", a.count);