如果我在NSNumber
中存储等于0的NSMutableArray
将被解释为nil
并导致计数方法出现问题?
答案 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);