除了明显的差异之外:
- Use
enumerateObjectsUsingBlock
当您同时需要索引和对象时
-
Don't use enumerateObjectsUsingBlock
when you need to modify local variables (I was wrong about this, see bbum's answer)
Is enumerateObjectsUsingBlock
通常认为更好或更差for (id obj in myArray)
也会起作用吗?优点/缺点是什么(例如性能更高还是更低)?
最终,使用您想要使用的并且在上下文中更自然的模式。
While for(... in ...)
非常方便且语法简洁,enumerateObjectsUsingBlock:
有许多可能有趣也可能不有趣的功能:
enumerateObjectsUsingBlock:
将与快速枚举一样快或更快(for(... in ...)
使用NSFastEnumeration
支持实施枚举)。快速枚举需要从内部表示转换为快速枚举的表示。其中有开销。基于块的枚举允许集合类以最快的速度遍历本机存储格式来枚举内容。可能与数组无关,但对于字典来说可能是一个巨大的差异。
“当需要修改局部变量时,不要使用 enumerateObjectsUsingBlock” - 不正确;你可以将你的当地人声明为__block
并且它们在块中是可写的。
enumerateObjectsWithOptions:usingBlock:
支持并发或反向枚举。
对于字典,基于块的枚举是同时检索键和值的唯一方法。
就我个人而言,我使用enumerateObjectsUsingBlock:
经常多于for (... in ...)
,但是——再次——个人选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)