OC里面的集中数组遍历方法

OC是兼容C语言的,所以我们要说的第一张遍历方法就是最原始,最常用的for循环

for (int i =0;i < array.count;i++)

{

  Nslog(@"array is %@",array[i]);

}

这个方法最普遍,用的非常多,总体说起来效率很一遍,但是有下标,好用。

而且可以反遍历。

OC 的1.0里面 NSEnumerator也可以进行遍历

 NSArray *array = [[NSArray alloc] init];

    NSEnumerator *enume = [array objectEnumerator];

    id object;

    while ((object = [enume nextObject]) != nil) {

        NSLog(@"array is %@", object);

    }

这个方法的好处是和遍历  NSDictionary 以及 NSSet的方法基本一样,而且反遍历的话可以用 [array reverseObjectEnumerator]这个方法,缺点就是没有下标,取中间值的话会不好操作。

OC 2.0的时候有了一个快速遍历的方法 

for (id object in array)

    {

        NSLog(@"array is %@",object);

    }

此方法效率很高,在如果不需要下标的全遍历的情况下,这个方法,轻便好用,首选。反遍历依旧是[array reverseObjectEnumerator]

在block出来之后,又出来一个enumerateObjectsUsingBlock: 的方法,我也是今天看到这个方法,没有见到过,才好好看了看这个方法

[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){

        NSLog(@"array is %d is %@", idx, obj);

    }];

可以看到这个方法里面有下标,有取值,而且还有是否停止。

反遍历的话,还有另外一个方法,

[array enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id obj, NSUInteger idx, BOOL *stop){

        NSLog(@"array is %d is %@",idx, obj);

    }];

这里是多了一个参数,可以选择正反遍历。而且如果选择了正反方向的话,底层通过GCD来处理事件,并不保证按照顺序触发,但是效率是一流的。



总结一下,在不需要下标的时候,用那个快速遍历是极好的,那么在有需要随时停止的时候,那么block的这个方法是极好的。

以后就不要在看到for循环这样的耗性能的方法了!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值