如果我在NSMutableArray
中存儲等於0的NSNumber
,那麼它將被解釋爲nil
並導致count方法的問題?可變數組中的NSNumber = 0
2
A
回答
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);
你有沒有想到這一點。我知道下面的答案是正確的。但是如果你親眼看到了這一點,那麼存儲NSNumber,然後創建一個NSArray,在運行時將該數組的值減半,這是不可思議的。我永遠不會想到這是事實,但這正是運行時所做的。 – cynistersix 2013-07-25 23:12:02
下面的答案是正確的。 IDE搞砸了,並沒有刷新觀看值。 – cynistersix 2013-07-25 23:18:21