黑马程序员技术交流社区

标题: NSArray 和 NSDictionary的问题 [打印本页]

作者: Lin枫    时间: 2014-4-11 08:32
标题: NSArray 和 NSDictionary的问题
本帖最后由 Lin枫 于 2014-4-11 10:46 编辑

为什么 NSArray 和 NSDictionary 都被设计成只能存放对象(不能存放基本类型,如 int)?

作者: 崔维友    时间: 2014-4-11 09:35
因为NSArray中存储的是指针,并且通过在加入到容器中的时候retain来保证指针的有效性。
OC的堆上存储是基于引用计数的,而原始数据类型的操作方式和OC类型是不同的(不需要retain)。
(百度知)
  1. NSNumber *icon_height;  // 创建NSNumber对象
  2. margin_left1 = [NSNumber numberWithFloat: 15.0 / 2];  // 将浮点型转换成NSNumber类型的对象

  3. NSArray *array1;
  4. array1 = [NSArray arrayWithObjects:icon_height,nil]; //将浮点型对象放入数组中
  5. float margin_width = [[arrTemp objectAtIndex:0] floatValue];  //取出数组中的元素,并将其转换成浮点型
  6. 各种数值
复制代码

NSArray和NSDictionary只能存储对象,而不能直接存储任何基本类型的数据,如int、float 或 struct。但是你可以用对象来封装基本数值。
作者: Lin枫    时间: 2014-4-11 09:39
崔维友 发表于 2014-4-11 09:35
因为NSArray中存储的是指针,并且通过在加入到容器中的时候retain来保证指针的有效性。
OC的堆上存储是基于 ...

哦,明白了,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2