前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >系统框架--48:多用块枚举,少用for循环

系统框架--48:多用块枚举,少用for循环

作者头像
xy_ss
发布2023-11-22 08:32:40
1190
发布2023-11-22 08:32:40
举报
文章被收录于专栏:浮躁的喧嚣

for循环

代码语言:javascript
复制
// NSArray(有序)
    NSArray *arr = @[@"1",@"2",@"3"];
    for (int i = 0; i< arr.count;i++) {
        NSLog(@"arrayContent--%@",arr[i]);

    }
   
 // NSDictionary(无序)
    NSDictionary *dic = @{@"1":@"1",@"2":@"2",@"3":@"3"};
    for(int i = 0; i< dic.count;i++)
    {
        NSString *key = dic.allKeys[I];
        NSString *obj = dic[key];
        NSLog(@"dicContent--%@",obj);
    }
    
//NSSet(无序)
    NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil];
    NSArray *setArr = [set allObjects];
    for(int i = 0;i< setArr.count;i++){
        NSString *obj = setArr[i];
        NSLog(@"setContent--%@",obj);
    }

NSEnumerator(不论遍历哪种collection,都可以采用这套相似语法)

代码语言:javascript
复制
  //NSArray(有序)
    NSArray *arr = @[@"1",@"2",@"3"];
    NSEnumerator *enumeratorArr = [arr objectEnumerator];
    id objectArr;
    while ((objectArr = [enumeratorArr nextObject]) != nil) {
        NSLog(@"str:%@",objectArr);
    }

  //NSDictionary(无序)
   NSDictionary *dic = @{@"1":@"1",@"2":@"2",@"3":@"3"};
    NSEnumerator *enumeratorDic = [dic keyEnumerator];
    id key;
    while ((key = [enumeratorDic nextObject]) != nil) {
        NSLog(@"str:%@",dic[key]);
    }

  //NSSet(无序)
    NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil];
    NSEnumerator *enumeratorSet = [set objectEnumerator];
    id setStr;
    while ((setStr = [enumeratorSet nextObject]) != nil) {
        NSLog(@"str:%@",setStr);
    }
    
  //NSArray(反序)
    NSArray *arr = @[@"1",@"2",@"3"];
    NSEnumerator *enumeratorRever = [arr reverseObjectEnumerator];
    id strR;
    while ((strR = [enumeratorRever nextObject]) != nil) {
        NSLog(@"str:%@",strR);
    }

快速遍历

代码语言:javascript
复制
//NSArray
  NSArray *arr = @[@"1",@"2",@"3"];
  for (NSString *str in arr) {
        NSLog(@"arrayContent--%@",str);
    }
    
//NSDictionary
  NSDictionary *dic = @{@"1":@"1",@"2":@"2",@"3":@"3"};
  for (NSString *key in dic) {
        NSString *obj = dic[key];
        NSLog(@"dic--%@",obj);
    }

//NSSet
   NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil];
    for (NSString *str in set) {
        NSLog(@"set--%@",str);
    }

//NSArray
    NSArray *arr = @[@"1",@"2",@"3"];
    for (NSString *str in [arr reverseObjectEnumerator]) {
        NSLog(@"arrayContent--%@",str);
    }

基于块的遍历方式(可以提供遍历时的下标、字典的key与value等)

代码语言:javascript
复制
//NSArray
NSArray *arr = @[@"1",@"2",@"3"];
[arr enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"arrayContent--%@",obj);
        if (stop) {
            NSLog(@"第%ld遍历",idx);
        }
    }];

//NSDictionary
 NSDictionary *dic = @{@"1":@"1",@"2":@"2",@"3":@"3"};
 [dic enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"dicContetn-key:%@,obj:%@,stop:%d",key,obj,stop);
    }];

//NSSet
NSSet *set = [NSSet setWithObjects:@"1",@"2",@"3", nil];
[set enumerateObjectsUsingBlock:^(id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"str:%@",obj);
    }];

通过设置NSEnumerationOptions可以选择类型

代码语言:javascript
复制
NS_OPTIONS(NSUInteger, NSEnumerationOptions) {
    NSEnumerationConcurrent = (1UL << 0),//每次迭代并行
    NSEnumerationReverse = (1UL << 1),//反向遍历
};
代码语言:javascript
复制
[arr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"arrayContent--%@",obj);

    }];

[dic enumerateKeysAndObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"dicContetn-key:%@,obj:%@,stop:%d",key,obj,stop);

    }];
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • for循环
  • NSEnumerator(不论遍历哪种collection,都可以采用这套相似语法)
  • 快速遍历
  • 基于块的遍历方式(可以提供遍历时的下标、字典的key与value等)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档