我正在使用《Mac OSX 版 Cocoa 编程》第四版来学习 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 在评论中指出的那样:
对此的常用术语是“装箱”(如将它们装箱),而反之——从盒子对象中提取原始值——就是拆箱。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)