可变数组中的 NSNumber=0

发布于 2024-12-22 07:01:59 字数 116 浏览 1 评论 0原文

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

If I store an NSNumber that is equal to 0 in an NSMutableArray will that be interpreted as nil and cause issues with the count method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如梦亦如幻 2024-12-29 07:01:59

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

此外,如果 anObject 为 nil,则不能将 nil 添加到数组中,

[mutableArray addObject:anObject];

并且会引发 NSInvalidArgumentException。

It will increment the count of the array.
[NSNumber numberWithInt:0]
is an object and is not nil.

Furthermore, you cannot add nil to an array

[mutableArray addObject:anObject];

raises an NSInvalidArgumentException if anObject is nil.

罪歌 2024-12-29 07:01:59

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

例如,对象 ID 0x2222 在内存中可能如下所示(非常简化):

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

您可以看到对象 ID 不是零,而是一个真实值。对象的内容为零,但这与对象 ID 无关。

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

No, you have to differentiate between the object id itself and the contents. The contents of an NSNumber set to 0 may well be zero but the id for said object is actually a real address.

For example, the object id 0x2222 may look like this in memory (very simplified):

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

You can see the the object id is not zero but a real value. The contents of the object are zero but that's not relevant to the object id.

The things that goes in the mutable array are the id values for objects, not the contents of those objects.

掀纱窥君容 2024-12-29 07:01:59
NSMutableArray *a = [NSMutableArray array];
[a addObject:[NSNumber numberWithInt:0]];
NSLog(@"count: %d", a.count);
NSMutableArray *a = [NSMutableArray array];
[a addObject:[NSNumber numberWithInt:0]];
NSLog(@"count: %d", a.count);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文