1第一种方式:利用for循环:
#pragma mark 遍历数组1
//----------简单遍历。利用for循环
void arrayFor1()
{
NSArray *array = [NSArray arrayWithObjects: @"1", @"2", @"3", nil];
NSUInteger count = array.count;
for (int i = 0; i<count; i++) {
// id == void *
id obj = [array objectAtIndex:i];
NSLog(@"%i-%@", i, obj);
}
}
#pragma mark 遍历数组2
//——————————快速遍历
void arrayFor2() {
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
//这里的I只是为了显示下标,不参与循环
int i =0;
//obj相当于一个迭代器,每执行一个循环,就往前走一步。
for (id obj in array)
{
NSLog(@"%i-%@", i, obj);
i++;
}
//如果你想直接打印元素,而不打印下标的话,可以这样,
/*
for (id obj in array)
{
NSLog(@"%i-%@", i, obj);
}
*/
}
#pragma mark 遍历数组3
//————————————利用block进行遍历:
//改进之处:可以让遍历随时停止。
void arrayFor3() {
NSArray *array = [NSArray arrayWithObjects: @"1", @"2", @"3", nil];
[array enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%zi-%@", idx, obj);
// 如果索引为1,就停止遍历
if (idx == 1) {
// 利用指针修改外面BOOL变量的值
*stop = YES;
}
}];
}
#pragma mark 遍历数组4
//————————利用迭代器进行遍历
void arrayFor4(){
NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", nil];
// 获取数组的迭代器
// NSEnumerator *enumerator = [array objectEnumerator];
// 反序迭代器(从尾部开始遍历元素)
NSEnumerator *enumerator = [array reverseObjectEnumerator];
// allObjects是取出没有被遍历过的对象,如果该数组之前没有遍历,那么迭代器会遍历一遍,然后
// 迭代器走到了数组的最后,如果想进行数组打印,还要让迭代器从新指向数组开头:
NSArray *array2 = [enumerator allObjects];
NSLog(@"array2:%@", array2);
//新建一个新的迭代器,这样可以指向数组的开始,进行遍历:
NSEnumerator *enumerator2 = [array objectEnumerator];
// 获取下一个需要遍历的元素
id obj = nil;
while (obj = [enumerator2 nextObject]) {
NSLog(@"obj=%@", obj);
}
}