A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 默默者 中级黑马   /  2014-4-29 12:36  /  1322 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OC中的两个类NSArray 与 NSMutaleArray,为什么要定义两个?
NSMutableArray完全包含了NSArray的功能,而且长度还可变。
这样做有什么方面的考虑?

评分

参与人数 2技术分 +2 收起 理由
jing迪 + 1
脸皮猴 + 1

查看全部评分

4 个回复

倒序浏览
首先,NSArray只能存储Objective-C 对象,而不能存储C语言中的基本数据类型,比如:int,flot,指针等。 在使用NSArray时,需特别注意,必须以nil 结尾,以此来代表结束。NSMutableArray 是 NSArray 补充类。NSMutalbeArray 创建的是动态数组,可随意添加或删除数组中的元素。 是为代码优化而设计的。

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报
NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域,一旦初始化,不能通过它对该内存区域的数据进行修改操作,但是它可以读数据。 NSMutableArray是动态的是NSArray的子类,可以对所指向的内存区域内容进行更改,并可以增加数组内容 NSArray和NSmutableArray的第一个数据的下标为0。
回复 使用道具 举报
不懂,同求技术大神指点
回复 使用道具 举报
本帖最后由 李鹏-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结尾。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马