objective-c - 何时使用 enumerateObjectsUsingBlock 与 fo

除了明显的区别:

  • 同时需要索引和对象时使用 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/

相关文章:

ios - Objective-C - 从字符串中删除最后一个字符

iphone - 以编程方式切换到 TabBar 选项卡 View ?

ios - 如何确定 NSDate 是否是今天?

ios - 如何查看 NSString 是否以某个其他字符串开头?

objective-c - xcode中Base SDK、iOS部署目标、Target、Projec

ios - 如何在 iPhone 上创建圆角 UILabel?

ios - 两个 NSDate 之间的天数

ios - iPhone:检测自上次屏幕触摸以来的用户不活动/空闲时间

ios - 从 UIColor 创建 UIImage 以用作 UIButton 的背景图像

ios - 如何手动弃用成员