OC数组的概念
oc中数组是用来存对象的,NSArray不可变数组,NSMutableArray可变的数组。
// 1,如何创建一个(不可变)数组。
// 实例方法
// ,和nil是必须的,
NSArray*arrrr=[[NSArray alloc]init];//这种情况是在数组作为属性的时候用的
NSArray *array1= [[NSArray alloc]initWithObjects:@"123",@"321", nil];
NSArray *array2=[[NSArray alloc]initWithArray:array1];
//见到时候[]要认识,不推荐使用。
NSArray*array3=@[@"456",@"654"];
NSLog(@"%@",array1);
NSLog(@"%@",array2);
NSLog(@"%@",array3);
NSArray *array=[[NSArray alloc]initWithContentsOfFile:@""];//本地存储使用
// 类方法
NSArray*array1=[NSArray arrayWithObjects:@"1234", nil];
NSArray*array2=[NSArray arrayWithArray:array1];
NSArray*array3=[NSArray arrayWithContentsOfFile:@""];//文件存储。
// 2.如何使用数组
// (1),使用数组元素
NSArray*array1=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];
NSInteger number=[array1 count];
NSLog(@"%lu",number);
NSString *item0=[array1 objectAtIndex:2];
NSLog(@"%@",item0);
NSLog(@"%@",array1);
在数组初始化的时候什么都不给,用来表示这个地方要东西,但是并不往里存,直接发到数据库里。
// (2),“增加数组元素”
// 因为数组是不可变的,所以从内容上来说,是不可能给数组中增加任何一个元素的。删除一个元素也是不肯能的。
// 建立一个新数组,用老数组再加上新的内容。。。
NSArray*old_array=[[NSArray alloc]initWithObjects:@"1",@"2",@"3", nil];
NSArray*new_array=[old_array arrayByAddingObject:@"4"];
NSArray*newer_array=[old_array arrayByAddingObjectsFromArray:new_array];
NSLog(@"%@",new_array);
NSLog(@"%@",newer_array);
// 2.如何创建一个可变数组
// 实例方法
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];
NSLog(@"%@",array1);
NSMutableArray *array2=[[NSMutableArray alloc]initWithArray:array1];
NSLog(@"%@",array2);
// 可变数组是不可变数组的子类。。。
NSMutableArray *array3=[[NSMutableArray alloc]initWithCapacity:10];
NSInteger changdu=[array3 count];
NSLog(@"%lu",changdu);
// capacity的作用,动态节约了对内存的开销,不够再申请。
NSMutableArray *array4=[NSMutableArray array];
NSLog(@"%@",array4);
//3,类方法
NSMutableArray *array1=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
NSLog(@"%@",array1);
NSMutableArray *array2=[NSMutableArray arrayWithArray:array1];
NSLog(@"%@",array2);
NSMutableArray *array3=[NSMutableArray arrayWithCapacity:10];
NSLog(@"%@",array3);
4,如何使用可变数组
(1),使用数组元素
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"123", nil];
NSString*item0=[array1 objectAtIndex:0];
NSLog(@"%@",item0);
(2),操作可变数组元素
NSMutableArray*array=[[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];
[array addObject:@"4"];
[array addObject:@"0"];
NSInteger length=[array count];
NSLog(@"%lu",length);
NSLog(@"%@",array);
[array insertObject:@"9" atIndex:0];
[array replaceObjectAtIndex:0 withObject:@"7"];
[array removeObject:@"1"];
[array removeObjectAtIndex:1];
// array removeObject:<#(id)#> inRange:<#(NSRange)#>
[array removeLastObject];
[array removeAllObjects];
NSLog(@"%@",array);
数组并不像字符串一样使用那么随意,要时刻记得,数组在使用的时候必须非配内存。
数组,可变,不可变要分清,谁的方法谁用。
可变数组和不可变数组本质没区别,在计算机中都是二进制存储,可变不可变只是告诉程序员如何使用这块内存
PS:字典(DICTIONARY)和可变字典(NSMUTABLEDICTIONARY)在知识结构上几乎和数组一样。