除了明显的区别:
enumerateObjectsUsingBlock
enumerateObjectsUsingBlock
当 for (id obj in myArray)
也可以工作时,enumerateObjectsUsingBlock
通常被认为是好还是坏?有哪些优点/缺点(例如,性能或多或少)?
最佳答案
最终,使用您想要使用的任何模式,并且在上下文中更自然。
虽然 for(... in ...)
非常方便且语法简洁,但 enumerateObjectsUsingBlock:
具有许多可能会或可能不会被证明有趣的功能:
enumerateObjectsUsingBlock:
将与快速枚举一样快或更快(for(... in ...)
使用 NSFastEnumeration
支持实现枚举)。快速枚举需要从内部表示转换为快速枚举的表示。其中有开销。基于 block 的枚举允许集合类以最快的速度遍历 native 存储格式来枚举内容。可能与数组无关,但对字典可能有很大的不同。
“当你需要修改局部变量时不要使用 enumerateObjectsUsingBlock”——不正确;你可以将你的本地人声明为 __block
并且它们将在 block 中是可写的。
enumerateObjectsWithOptions:usingBlock:
支持并发或反向枚举。
对于字典,基于 block 的枚举是同时检索键和值的唯一方法。
就个人而言,我使用 enumerateObjectsUsingBlock:
比 for (... in ...)
更频繁,但 - 再次 - 个人选择。
关于objective-c - 何时使用 enumerateObjectsUsingBlock 与 for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486622/