enumerateObjectsUsingBlock

enumerateObjectsUsingBlock

除了明显的区别:

  • 既需要索引又需要对象
  • 时,请使用enumerateObjectsUsingBlock
  • 当您需要修改局部变量时,请不要使用enumerateObjectsUsingBlock(对此我错了,请参见bbum的回答)

  • enumerateObjectsUsingBlock也可以工作时,通常认为for (id obj in myArray)更好还是更坏?优点/缺点是什么(例如,其性能或多或少)?

    最佳答案

    最终,使用您想要使用的任何模式,并且在上下文中更加自然。

    尽管for(... in ...)非常方便且语法简短,但enumerateObjectsUsingBlock:具有许多可能会或可能不会有趣的功能:

  • enumerateObjectsUsingBlock:将比快速枚举快或快(for(... in ...)使用NSFastEnumeration支持实现枚举)。快速枚举需要从内部表示形式转换为快速枚举的表示形式。其中有开销。基于块的枚举使集合类可以像遍历 native 存储格式一样快地枚举内容。与数组可能无关紧要,但对字典而言可能是巨大的不同。
  • “当您需要修改局部变量时,请勿使用enumerateObjectsUsingBlock”-不正确;您可以将您的本地人声明为__block,它们将在代码块中可写。
  • enumerateObjectsWithOptions:usingBlock:支持并发或反向枚举。
  • 带有字典的
  • ,基于块的枚举是同时检索键和值的唯一方法。

  • 就个人而言,我使用enumerateObjectsUsingBlock:的频率要比for (... in ...)的频率高,但是-还是个人选择。

    10-08 08:21