场景一
场景条件
- 需要按顺序
- 同步执行
使用建议:
- for..in (NSFastEnumeration)
* enumerateObjectsUsingBlock* 经典for循环
推荐原因:
在集合元素“1000000”量级上,for in效率比经典for循环要高50倍。集合内元素较少时,经典for循环效率比forin要高1倍。但for in代码可读性和安全性更高,综合考虑建议使用用for in.
场景二
场景条件
- 需要按顺序
- 同时需要key和value
按顺序优先考虑下列方法* enumerateKeysAndObjectsUsingBlock* 经典for循环
推荐原因:
在集合元素”100“量级和“1000000”量级时,enumerateKeysAndObjectsUsingBlock的效率都比“经典for循环”要高,而且不会出现“off-by-one errors”错误。建议需要key、vlaue时使用enumerateKeysAndObjectsUsingBlock
场景三
场景条件
- 处理比较耗时
- 不需要按顺序
按顺序优先考虑下列方法
- enumerateObjectsWithOptions (NSEnumerationConcurrent)
* dispatch_apply(Concurrent)
推荐原因:
enumerateObjectsWithOptions和dispatch_apply(Concurrent)各种场景的效率都差不多,但是enumerateObjectsWithOptions可读性更强,特性也更多。建议使用enumerateObjectsWithOptions。
场景四
场景条件
- 倒序遍历
按顺序优先考虑下列方法
- enumerateObjectsWithOptions:NSEnumerationReverse
- reverseObjectEnumerator
|
|
|
|
推荐原因:
enumerateObjectsWithOptions和reverseObjectEnumerator在各量级的效率表现相似,两个方法均可使用