oc循环break:continue,return,goto

关键字:break:continue;return;goto;

  • break:跳出本循环,比如本for循环

  • continue:跳出本循环体的本次循环,比如本for循环的i=2的这次循环

  • return:不但跳出所有循环体,连本方法都跳出了

  • goto,跳出到自己打标签的位置

    for(int i = 0; i < 3; i ++)
    {
      for(int j = 0; j < 3; j++)
      {
    
              if (i ==1 && j == 1 ) {
                  goto forEnd;
              }
              NSLog(@"%@-%@",@(i).stringValue, @(j).stringValue);
      }
    }
    forEnd:
    NSLog(@"--------会输出----------");
    

enumerateObjectsUsingBlock

*stop

  NSArray *names = @[@"lzh", @"ysh", @"yys"];
  [names enumerateObjectsUsingBlock:^(NSString *  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    if ([obj isEqualToString:@"lzh"]) {
        *stop = YES; // !!!这里并不会马上退出循环,而是执行完 block 中的代码才退出循环
    }
    NSLog(@"Name %@\n", obj);
  }];

return

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSLog(@"Before if - obj = %@", obj);
    if ([obj isEqualToString:@"3"]) {
        return;      //仅跳出本次循环
    }
    NSLog(@"After if - obj = %@", obj);
}];

stop + return

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSLog(@"Before if - obj = %@", obj);
    if ([obj isEqualToString:@"3"]) {
        *stop = YES;
        return;
        //stop 和 return配合使用,跳出本enum遍历
    }
    NSLog(@"After if - obj = %@", obj);
}];

双层循环,stop + return仅跳出本enum,对外层enum无影响

NSArray *arr = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4",@"5", nil];
NSArray *arrson = [NSArray arrayWithObjects:@"a",@"b",@"c",@"d",@"e", nil];
[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
    NSLog(@"@@@@@@@@@@@@@@@@ Before if - obj = %@", obj);
        [arrson enumerateObjectsUsingBlock:^(id  _Nonnull objson, NSUInteger idxson, BOOL * _Nonnull stopson) {
            NSLog(@"---------------------Before if - obj = %@", objson);
            if ([objson isEqualToString:@"b"]) {
                *stopson = YES;
                return;
            }
            NSLog(@"------------After if - obj = %@", objson);
        }];
    NSLog(@"@@@@@@@@@@@@@@@@ After if - obj = %@", obj);
}];

https://lzhenhong.github.io/2016/09/08/enumerateObjectsUsingBlock/
http://www.jianshu.com/p/98d5eb51c29a

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,779评论 0 11
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,766评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,771评论 0 33
  • 从小时候起就喜欢武侠,如萧峰自带着背景音乐,去聚贤庄,去少林寺,总被翻出来,看很多遍,依然为之热血沸腾,景仰的是虽...
    513403c4d633阅读 321评论 0 1
  • 跟朋友一起去吃自助,一进门先来了一碗炒饭。。。
    RY麦布阅读 70评论 0 0