OC数组的四大遍历方式和分析。

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);
    }
}


2. 第二种方式:利用增强for循环(for in);

#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);
     }
     
     */
}


3. 第三种方式:利用block进行遍历:


#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;
         }
     }];
}



4.第四种遍历方式:利用迭代器进行遍历:

#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);
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值