黑马程序员技术交流社区

标题: OC中的NSArray和NSMutableArray问题 [打印本页]

作者: 默默者    时间: 2014-4-29 12:36
标题: OC中的NSArray和NSMutableArray问题
OC中的两个类NSArray 与 NSMutaleArray,为什么要定义两个?
NSMutableArray完全包含了NSArray的功能,而且长度还可变。
这样做有什么方面的考虑?
作者: 魅影穿眸    时间: 2014-4-29 13:04
首先,NSArray只能存储Objective-C 对象,而不能存储C语言中的基本数据类型,比如:int,flot,指针等。 在使用NSArray时,需特别注意,必须以nil 结尾,以此来代表结束。NSMutableArray 是 NSArray 补充类。NSMutalbeArray 创建的是动态数组,可随意添加或删除数组中的元素。 是为代码优化而设计的。
作者: siegee    时间: 2014-4-29 13:43
NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域,一旦初始化,不能通过它对该内存区域的数据进行修改操作,但是它可以读数据。 NSMutableArray是动态的是NSArray的子类,可以对所指向的内存区域内容进行更改,并可以增加数组内容 NSArray和NSmutableArray的第一个数据的下标为0。
作者: 墨子    时间: 2014-4-29 14:07
不懂,同求技术大神指点
作者: 李鹏-ios    时间: 2014-4-29 22:21
本帖最后由 李鹏-ios 于 2014-4-29 22:22 编辑

NSArray创建的是不可变对象的数组,但NSMutableArray创建的是可变数组,这样可随意添加删除数组中的对象了,是对NSArray的一个补充。NSArray对于一楼所说的必须以nil结尾是正确的,我想补充的一点是:如果通过类方法arrayWithObjects创建NSArray数组,如:
  1. NSArray *array = [ NSArray arrayWithObjects:@"a",@"b",@"c",nil]; //也可以使用以下方法定义
  2. NSArray *array =@[@"a",@"b",@"c"];
复制代码
即使用第二种语法时可以不用显示的使用nil结尾。





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