enumerateObjectsWithOptions 中的 NSEnumerationOptions

这个 options 有两个选项可以选择,一个是 concurrent 大概按照顺序遍历,为什么说大概呢,因为它会利用 CPU 的多核进行快速遍历,这样就不能保证顺序了。
以下是 NSEnumerationConcurrent 的测试代码和结果.

let array = NSArray(array: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
array.enumerateObjects(options: .concurrent) { (obj, idx, stop) in
    print("内容" + "\(obj)")
    if idx == 3 {
        stop.pointee = true
    }
}

结果

内容3
内容2
内容4
内容5
内容6
内容7
内容8
内容9
内容10
内容11
内容12
内容13
内容14
内容15
内容16
内容17
内容18
内容19
内容20

以下是 NSEnumerationReverse 的代码及结果

let array = NSArray(array: [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])
array.enumerateObjects(options: .reverse) { (obj, idx, stop) in
    print("内容" + "\(obj)")
    if idx == 3 {
        stop.pointee = true
    }
}

结果

内容20
内容19
内容18
内容17
内容16
内容15
内容14
内容13
内容12
内容11
内容10
内容9
内容8
内容7
内容6
内容5
内容4
内容3
内容2

测试机为 5S

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,363评论 0 6
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,209评论 30 471
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,698评论 3 83
  • 小时候,小河在召唤,几堂课简直度日如年。 盼着过年的新衣服、红包,一天一天的倒计时;如今,老天爷满足了我,感觉昨天...
    诗的影子阅读 202评论 1 1