美文网首页iOS Developer
iOS-数组遍历enumerateObjectsWithOpti

iOS-数组遍历enumerateObjectsWithOpti

作者: linbj | 来源:发表于2017-04-11 14:08 被阅读381次
typedef NS_OPTIONS(NSUInteger, NSEnumerationOptions) {
    NSEnumerationConcurrent = (1UL << 0),并发排序
    NSEnumerationReverse = (1UL << 1),逆序
};

// obj 内容
// idx 数组中的位置
// stop 为YES的时候停止遍历
- (void)enumerateObjectsWithOptions:(NSEnumerationOptions)opts usingBlock:(void (NS_NOESCAPE ^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
    NSMutableArray *mutArr = [[NSMutableArray alloc]initWithArray:@[
                                                                    @"a",
                                                                    @"b",
                                                                    @"c",
                                                                    @"d",
                                                                    @"e",
                                                                    @"f",
                                                                    @"g"
                                                                    ]];
    
    [mutArr enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"obj:%@,idx:%lu",obj,(unsigned long)idx);
        [mutArr insertObject:@"h" atIndex:0];
        if (idx == 2) {
            *stop = YES;
            NSLog(@"%@",mutArr);
        }
        
    }];
2017-04-11 14:03:16.161707 Test2[4386:1449433] obj:g,idx:6
2017-04-11 14:03:17.853742 Test2[4386:1449433] obj:e,idx:5
2017-04-11 14:03:17.853903 Test2[4386:1449433] obj:c,idx:4
2017-04-11 14:03:17.853979 Test2[4386:1449433] obj:a,idx:3
2017-04-11 14:03:17.854048 Test2[4386:1449433] obj:h,idx:2
2017-04-11 14:03:17.854414 Test2[4386:1449433] (
    h,
    h,
    h,
    h,
    h,
    a,
    b,
    c,
    d,
    e,
    f,
    g
)

这种数组遍历方式的优势:

  1. 遍历顺序有倒序/并发混序, 可根据枚举值控制比 for循环方便许多.
  2. 遍历中自带 *stop参数, 跳出方便.
  3. 可以在遍历的 block中增删数据, 比 forin遍历方便许多
  4. 在庞大的数据量下, 此方式是比 for循环, forin 等方式,要快许多的方式.在其执行过程中可以利用到多核cpu的优势

相关文章

  • iOS-数组遍历enumerateObjectsWithOpti

    这种数组遍历方式的优势: 遍历顺序有倒序/并发混序, 可根据枚举值控制比 for循环方便许多. 遍历中自带 *st...

  • angular2foreach遍历的几种用法

    遍历简单的数组 遍历数组对象 遍历嵌套数组

  • VS常用四种遍历数组的方法

    目录 for 遍历数组 for in 遍历数组 for of 遍历数组 forEach遍历数组 优缺点总结原文:h...

  • foreach/forin

    1.for/in遍历属性,数组是遍历下标 for/each遍历属性值,数组遍历数组的值

  • JS数组遍历的三种常用方法

    1.数组下标遍历 数组下标遍历是最常用也最普通的数组遍历方式 例如: 2.for in遍历 for in是根据数组...

  • for_of循环

    for(let value of target){}循环遍历 遍历数组 遍历Set 遍历Map 遍历字符串 遍历伪数组

  • PHP中的数组

    数组分类 索引数组 关联数组 数组遍历 传值遍历 传址遍历 数组函数 指针操作函数 current($array)...

  • Go的数组和指针

    一、 定义数组 二、 遍历数组 下标遍历 range遍历(index) range遍历(index,value) ...

  • forEach、for-in与for-of的区别

    遍历数组推荐for of ,遍历对象推荐 for in for in可以用来便利数组和对象 for in在遍历数组...

  • 6.v-for指令

    1.v-for 遍历数组: 遍历对象数组: 遍历对象: 遍历数据 2.key属性:

网友评论

    本文标题:iOS-数组遍历enumerateObjectsWithOpti

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