可变数组中的NSNumber = 0

时间:2011-12-20 03:05:03

标签: objective-c nsmutablearray null nsnumber

如果我在NSNumber中存储等于0的NSMutableArray将被解释为nil并导致计数方法出现问题?

3 个答案:

答案 0 :(得分:5)

它将增加数组的计数  [NSNumber numberWithInt:0]
 是一个对象而不是零。

此外,您无法将nil添加到数组

[mutableArray addObject:anObject];
如果anObject为nil,则

引发NSInvalidArgumentException。

答案 1 :(得分:2)

不,您必须区分对象ID本身和内容。设置为0的NSNumber的内容可能为零,但所述对象的 id 实际上是一个真实地址。

例如,对象标识0x2222在内存中可能看起来像这样(非常简化):

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

您可以看到对象ID 为零而是实际值。对象的内容为零,但与对象id无关。

可变数组中的内容是对象的id值,而不是这些对象的内容。

答案 2 :(得分:1)

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