除了明显的区别:
enumerateObjectsUsingBlock
enumerateObjectsUsingBlock
(对此我错了,请参见bbum的回答)当
enumerateObjectsUsingBlock
也可以工作时,通常认为for (id obj in myArray)
更好还是更坏?优点/缺点是什么(例如,其性能或多或少)? 最佳答案
最终,使用您想要使用的任何模式,并且在上下文中更加自然。
尽管for(... in ...)
非常方便且语法简短,但enumerateObjectsUsingBlock:
具有许多可能会或可能不会有趣的功能:
enumerateObjectsUsingBlock:
将比快速枚举快或快(for(... in ...)
使用NSFastEnumeration
支持实现枚举)。快速枚举需要从内部表示形式转换为快速枚举的表示形式。其中有开销。基于块的枚举使集合类可以像遍历 native 存储格式一样快地枚举内容。与数组可能无关紧要,但对字典而言可能是巨大的不同。 __block
,它们将在代码块中可写。 enumerateObjectsWithOptions:usingBlock:
支持并发或反向枚举。 就个人而言,我使用
enumerateObjectsUsingBlock:
的频率要比for (... in ...)
的频率高,但是-还是个人选择。