gpt4 book ai didi

objective-c - NSNumber 与 NSArray 的原始 int

转载 作者:太空狗 更新时间:2023-10-30 03:59:25 24 4
gpt4 key购买 nike

我正在使用第 4 版 Cocoa Programming for Mac OSX 学习 Objective-C/Cocoa。对于这个基本问题,我深表歉意,但我是那些真正需要了解所有事物的内部结构才能使它对我有意义的人之一,而这本书并不总是能满足我的需要。我已经掌握了 C++ 的基础知识,现在我正在学习 Obj-C,所以这就是我的背景。这是我正在学习的一段代码...

for (i= 0; i < 10; i++) {
NSNumber *newNumber = [[NSNumber alloc] initWithInt:(i * 3)];
[array addObject:newNumber];
}

我的问题是为什么要创建 NSNumber 的实例来添加到数组中,而不是只添加一个整数变量。似乎每个循环都可以避免创建一个新实例只是额外的开销。但我确信作者知道他们在做什么,并且这样做是有原因的,有人可以解释一下吗?

最佳答案

NSArray 只能容纳对象,不能容纳原始类型。 NSNumber 和 NSValue 用于将原始类型包装在对象中,因此它们可以存储在基础集合中,如 NSArray、NSDictionary 和 NSSet(以及它们的可变/有序对应物)。正如 Peter Hosey 在评论中指出的那样:

The common term for this is "boxing" (as in boxing them up), and the inverse — extracting the primitive value from a box object — is unboxing.

关于objective-c - NSNumber 与 NSArray 的原始 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com