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

你可能感兴趣的:(enumerateObjectsWithOptions 中的 NSEnumerationOptions)