gpt4 book ai didi

objective-c - 何时使用 enumerateObjectsUsingBlock 与 for

转载 作者:IT老高 更新时间:2023-10-28 12:17:24 29 4
gpt4 key购买 nike

除了明显的区别:

  • 同时需要索引和对象时使用 enumerateObjectsUsingBlock
  • 当你需要修改局部变量时不要使用enumerateObjectsUsingBlock(我错了,看bbum的回答)

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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com