OC数组
NSArray是静态的数组,就是它所指向的内容是不可改变的,它指向一段内存区域,一旦初始化,不能通过它对该内存区域的数据进行修改操作,但是它可以读数据。
NSMutableArray是动态的是NSArray的子类,可以对所指向的内存区域内容进行更改,并可以增加数组内容
NSArray和NSMutableArray的第一个数据的下标为0。
1、NSArray 不可变数组
[array1 count]: 数组的长度。
// 创建OC数组对象 NSArray *array = [NSArray arrayWithObject:@"jack"]; // nil是数组元素结束的标志 NSArray *array1 = [NSArray arrayWithObjects:@"jack",@"haha",nil]; NSLog(@"%ld",array1.count); // 输出数组的长度
[array1 objectAtIndex:0]: 访问数组中元素
array1[0];
NSArray *array1 = [NSArray arrayWithObjects:@"jack",@"haha",nil]; // 访问输出数组元素 NSLog(@"%@",[array1 objectAtIndex:1]); NSLog(@"%@",array1[0]);
快速创建OC数组对象:
[NSArray arrayWithObjects;@"jack",@"haha" ...,nil] :向数组对象初始化赋值。这里可以写任意对象的指针,结尾必须使用nil。
// 快速创建NSArray数组对象 NSArray *array = @[@"jack",@"rose',@"haha"];
NSLog(@"%@",array1);
快速遍历NSArray数组
NSArray *array = @[@"jack",@"haha"]; // id obj代表着数组中的每一个元素 for (id obj in array){ NSLog(@"%@",obj); }
找出元素在数组中的位置
NSArray *array = @[@"jack",@"haha"]; // id obj代表着数组中的每一个元素 for (id obj in array) { // 找出obj元素在数组中的位置 NSUInteger i = [array indexOfObject:obj]; NSLog(@"%ld - %@", i, obj); }
利用block
NSArray *array = @[@"jack",@"haha"]; // 每遍历到一个元素,就会调用一次block // 并且当前元素和索引位置当做参考传给block [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"---------"); }];
/*
Bool *stop
if(idx == 0){
停止遍历
*stop = YES;
}
*/