我正在使用第四版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];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是为什么你要创建NSNumber的实例来添加到数组而不是只是一个整数变量.看起来这只是额外的开销,可以避免每个循环创建一个新实例.但我确信作者知道他们在做什么,并且有理由,有人可以解释一下吗?
NSArray只能保存对象,而不能保存原始类型.NSNumber和NSValue用于在对象中包装基本类型,因此它们可以存储在基础集合中,如NSArray,NSDictionary和NSSet(以及它们的可变/有序对应物).正如Peter Hosey在评论中指出的那样:
常见的术语是"装箱"(就像装箱一样),反向提取箱子对象的原始值 - 是拆箱.
| 归档时间: |
|
| 查看次数: |
1003 次 |
| 最近记录: |