【问题标题】:indexOfObject vs. indexOfObjectIdenticalToindexOfObject 与 indexOfObjectIdenticalTo
【发布时间】:2011-03-11 05:13:58
【问题描述】:

这两个 NSArray 方法有什么区别?

【问题讨论】:

    标签: objective-c nsarray


    【解决方案1】:

    indexOfObjectIdenticalTo 检查完全相同的id(相同地址)。 indexOfObject 检查 isEqual: 是否返回 YES

    【讨论】:

    • 还要注意indexOfObjectIdenticalTo:indexOfObject: 快很多数量级。尽管两者都不是特别快。如果你想要高性能,你应该考虑使用NSSet
    【解决方案2】:

    第一个使用isEqual: 查找匹配的对象,而第二个查找相同的对象(即位于同一内存位置的对象)。

    【讨论】:

    • 有什么办法让它使用 isEqualToString: 代替?
    • @SantaClaus:已经做到了。当您传递 NSString * 时,isEqual:isEqualToString: 的行为相同。两者之间的唯一区别是轻微的性能优势和isEqualToString: 提供的静态类型检查,这与indexOfObject: 的上下文无关。
    • @MarceloCantos 嗯。那我有个问题。 :)
    • @MarceloCantos 我最终会提出一个新问题
    • 这两个答案如何相互矛盾很有趣。你说第一个检查相等,而其他人说另一个检查相等函数而不是 id。
    【解决方案3】:

    indexOfObjectIdenticalToindexOfObject 快得多,但它使用指针比较 == 而不是调用 isEqual:

    如果您正在搜索指针匹配,请始终使用 indexOfObjectIdenticalTo 以获得最佳性能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多