Objective-C 【NSMutableArray】
2015-09-14 11:09
148 查看
NSMutableArray 介绍
NSMutableArray 是 NSArray 的子类
NSArray 是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
NSMutableArray 是可变的,随时可以往里面添加、更改、删除元素
代码:
运行结果:
NSMutableArray 是 NSArray 的子类
NSArray 是不可变的,一旦初始化完毕后,它里面的内容就永远是固定的,不能删除里面的元素,也不能再往里面添加元素
NSMutableArray 是可变的,随时可以往里面添加、更改、删除元素
代码:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { // 1、NSMutableArray 创建方法 // ①可以创建空数组 NSMutableArray *array1=[NSMutableArray array]; //定义一个长度为10的数组 NSMutableArray *array2=[[NSMutableArray alloc]initWithCapacity:10]; [array2 addObject:@"ad"]; // ②调用类方法创建数组 // NSMutableArray *array3=[NSMutableArray arrayWithObjects:@"qw",@"ed",@"1qa",@"2w4r",@"zxc", nil]; // ③调用对象方法创建数组 // NSMutableArray *array4=[[NSMutableArray alloc]initWithObjects:@"adf",@"daf",@"fadsfa", nil]; // 2、数组的使用 // ①可以向数组添加元素(以array1为例) [array1 addObject:@"one"]; [array1 addObject:@"two"]; [array1 addObject:@"two"]; [array1 addObject:@"one"]; [array1 addObject:@"two"]; [array1 addObject:@"one11"]; [array1 addObjectsFromArray:array2];//将array2中的所有元素都添加到array1中(把另外一个数组整体添加该数组中) // for (NSString *str1 in array1) { // NSLog(@"str1 = %@",str1); // } NSLog(@"array1 = %@",array1); // ②计算数组的长度 NSUInteger len1=array1.count; NSLog(@"len1 = %ld",len1); // ③插入一个元素在指定位置 [array1 insertObject:@"one1" atIndex:1]; NSLog(@"array1 = %@",array1); // ④删除末尾的元素 [array1 removeLastObject]; NSLog(@"array1 = %@",array1); // ⑤删除所有元素 // [array1 removeAllObjects]; // NSLog(@"array1 = %@",array1); // ⑥删除指定元素 [array1 removeObject:@"one"];//有几个删几个(根据对象isEqual消息判断) NSLog(@"array1 = %@",array1); [array1 removeObjectIdenticalTo:@"two"];//根据对象的地址判断 NSLog(@"array1 = %@",array1); // 我们发现上面两个方法 removeObject & removeObjectIdenticalTo 都能达到删除指定元素的目的,而且是有几个删几个,但是他们还是有小小的不同。分析一下:用removeObject删除某一个对象实质上只是将对象的引用计数-1,对于对象本身没有什么影响,但是如果我们要完全删除对象的本体,可以使用removeObjectIdenticalTo方法 // ⑦替换指定元素 [array1 replaceObjectAtIndex:1 withObject:@"a"]; NSLog(@"array1 = %@",array1); // ★替换指定元素更方便的写法,直接将数组中的某一个元素赋予新值,因为是可变数组,所以这么做是可以的 array1[0]=@"q"; NSLog(@"array1 = %@",array1); // ⑧交换数组中两个元素的位置 [array1 exchangeObjectAtIndex:0 withObjectAtIndex:1];//上面的两个参数是需要交换的两个元素的下标 NSLog(@"array1 = %@",array1); // 3、NSMutableArray 的错误用法 // NSMutableArray *array5=@[@"ad",@"fad",@"12"]; //首先NSMutableArray创建出来的是一个可变数组,而不能用NSArray创建数组的简写形式创建,因为用这种简写形式创建出来的数组是不可变的,即使你是用NSMutableArray这个类创建的也是一个不可变数组(相当于NSMutableArray调用父类NSArray的方法) // [array5 addObject:@"dsafa"];//上面那句话没有错误,但是如果加上这句话就有错误了,不可变数组怎么能再往里添加元素呢? } return 0; }
运行结果:
2015-09-14 17:14:46.138 NSMutableArray[23100:2683033] array1 = ( one, two, two, one, two, one11, ad ) 2015-09-14 17:14:46.139 NSMutableArray[23100:2683033] len1 = 7 2015-09-14 17:14:46.139 NSMutableArray[23100:2683033] array1 = ( one, one1, two, two, one, two, one11, ad ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( one, one1, two, two, one, two, one11 ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( one1, two, two, two, one11 ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( one1, one11 ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( one1, a ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( q, a ) 2015-09-14 17:14:46.140 NSMutableArray[23100:2683033] array1 = ( a, q )
相关文章推荐
- 黑马程序员——Objective--C基础笔记之内存管理(一)
- ***-[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from ob
- SQL sysobjects 表 详解
- Objective-C学习-KVC(键值编码)和KVO(键值观察)
- 【IOS 开发学习总结-OC-7.6-★】objective-c ——块(Block)
- objective-C 中两种实现动画的方法(转)
- Objective-C - category学习笔记
- Objective-C - protocol学习笔记
- 【IOS 开发学习总结-OC-7.5】objective-c 的c语言特性——结构体
- Objective-C 【NSMutableString】
- Objective-C 【NSArray 的基本使用&常见方法&简写形式】
- Objective-C学习-数组排序问题
- Objective-C - OC访问器学习笔记
- Object-API-NSLog
- 'dict' object has no attribute 'has_key'
- 【IOS 开发学习总结-OC-7.4】objective-c与c语言的预处理
- java学习之Object类常用方法
- 基础学习day08---多态、简单工厂、Object类equals和toString
- 黑马程序员——Objective--C笔记之协议
- JS 对象(Object)和字符串(String)互转