美文网首页
Objective-C 之 基于块的遍历方式

Objective-C 之 基于块的遍历方式

作者: saintPN | 来源:发表于2016-03-15 14:07 被阅读0次

      Objective-C现在共有四种遍历方式,for循环、for in快速遍历、NSEnumerator遍历、UsingBlock基于块的遍历。

      - (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOLBOOL *stop))block

      这是Objective-C最新引进的一种基于block遍历方法。

    NSDictionary *dict = / .... /;

    [dict enumerateObjectsUsingBlock: ^(id key,id obj,BOOLBOOL *stop) {

    //

    if (....) {

        *stop = YES;

        }

    }

      可以看到此方式大大胜过其它方式的地方在于:遍历时可以获得更多的信息,如上所示,遍历字典时可以同时获取键和值,遍历其他类型的collection时,还可以获取到下标。另外还有一个好处,可以直接指定类型:

    NSDictionary *dict = / .... /;

    [dict enumerateObjectsUsingBlock: ^(NSString* key,NSString* obj,BOOLBOOL *stop) {

    //

    if (....) {

      *stop = YES;

      }

    }

      可以看到直接指定了两个NSString类型,在指定类型后,编译器就可以检测是否调用了错误的方法,有的话及时报错。如果知道类型,就应该这样指明类型。最重要的,这种方法本身就能通过GCD来并发执行遍历操作,无需另外编写代码,简直是福音,其他的遍历方法都无法实现这一点。所以,如果遇到需要遍历的情况,此种方法是首选。

    相关文章

      网友评论

          本文标题:Objective-C 之 基于块的遍历方式

          本文链接:https://www.haomeiwen.com/subject/pcqqlttx.html