Objective-C语言——NSMutableArray可变数组
2015-12-15 13:20
591 查看
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组NSMutableArray,它是NSArray的子类 //初始化方法 //初始化一个空的可变数组 NSMutableArray *mArray1 = [NSMutableArray array]; //创建一个里面只有一个元素的可变数组 NSMutableArray *mArray2 = [NSMutableArray arrayWithObject:@"1"]; //创建一个里面多个元素的可变数组 NSMutableArray *mArray3 = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; //根据另一个数组产生新的数组 NSMutableArray *mArray4 = [NSMutableArray arrayWithArray:mArray3]; //可变数组独有的初始化方法 NSMutableArray *mArray5 = [NSMutableArray arrayWithCapacity:10]; //数组的容量也只是数组最终大小的一个参考,容量数组之所以存在,是为了cocoa 能够对代码进行一些优化,cocoa即不会将对象预写入数组,也不会用该容量来限制数组的大小。 //从本地读取数组 NSMutableArray *mArray6 = [NSMutableArray arrayWithContentsOfFile:@""]; //从网络读取数组 NSMutableArray *mArray7 = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@""]]; //增加 //在数组的末尾增加一个元素 [mArray3 addObject:@"5"]; //在数组指定位置插入一个元素 [mArray3 insertObject:@"Rick" atIndex:2]; //替换 将数组指定位置上的元素替换成用户想要的元素 [mArray3 replaceObjectAtIndex:2 withObject:@"Rick"]; //交换 将数组指定位置上的两个元素交换位置 [mArray3 exchangeObjectAtIndex:0 withObjectAtIndex:1]; //删除 //删除指定元素 [mArray3 removeObject:@"1"]; //删除指定位置上的元素 [mArray3 removeObjectAtIndex:0]; //删除数组中最后一个元素 [mArray3 removeLastObject]; //删除数组所有元素 [mArray3 removeAllObjects]; for (int i=0; i<mArray3.count; i++) { NSLog(@"mArray3[%d]=%@",i,mArray3[i]); } //数组的遍历 NSMutableArray *marray = [NSMutableArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5",nil]; //快速枚举 for (NSString *element in marray) { NSLog(@"element = %@",element); } //使用系统提供的枚举类型 NSEnumerator *enumerator = [marray objectEnumerator]; //得到一个枚举器以后我们就可以通过while循环来遍历数组元素,而不用管索引问题,每次循环可以通过枚举的nextObject方法得到下一个数组里的对象。直到到nextObject为nil时,循环结束,这也是为什么数组元素中不要出现nil的原因 id ele; while (ele=[enumerator nextObject]) { //使用枚举器遍历集合 NSLog(@"ele=%@",ele); } /* 注意: 我们使用枚举器遍历数组元素期间,不要添加或者删除数组元素,否则运行的时候程序会崩溃 因为通过objectEnumerator 的枚举器的时候数组元素的个数已经记录在枚举器里了,在遍历的时候,如果添加或删除数组元素的话,数组元素的个数就前后不一致而出现异常。 */ } return 0; }
运行结果
2015-12-15 13:20:52.443 OC_05_02[2688:62152] element = 1
2015-12-15 13:20:52.444 OC_05_02[2688:62152] element = 2
2015-12-15 13:20:52.444 OC_05_02[2688:62152] element = 3
2015-12-15 13:20:52.445 OC_05_02[2688:62152] element = 4
2015-12-15 13:20:52.445 OC_05_02[2688:62152] element = 5
2015-12-15 13:20:52.446 OC_05_02[2688:62152] ele=1
2015-12-15 13:20:52.446 OC_05_02[2688:62152] ele=2
2015-12-15 13:20:52.446 OC_05_02[2688:62152] ele=3
2015-12-15 13:20:52.446 OC_05_02[2688:62152] ele=4
2015-12-15 13:20:52.447 OC_05_02[2688:62152] ele=5
Program ended with exit code: 0
相关文章推荐
- Objective-C语言——NSAarray不可变数组
- postgresql报错Error while loading shared libraries: libpq.so.5: cannot open shared object file
- 单 例(Singleton)
- Xcode升级到7系列后 缺少 *.dylib库的解决方法
- FileReader createObjectURL
- [转]PDF预览插件PDFObject.js
- error while loading shared libraries: libreadline.so.5: cannot open shared object file
- 在IE中使用ActiveX控件,需要使用HTML中的标志是<OBJECT>,该标记几个重要的参数特性有:
- 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object) 【转】
- 线程中CreateEvent和SetEvent及WaitForSingleObject的用法
- JSON中JObject和JArray的修改
- Objective-C中的内存管理
- ObObjective-c 采集试图 UICollection
- Objective-c for 循环 九宫格
- java ObjectInputStream学习小记
- object is not afunction错误
- object-c定义属性与成员变量的区别
- Objective-C 数组一 "不可变数组"
- 【转】Objective-C Runtime 消息机制
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForKey的差异