美文网首页
isEqual 与 ==

isEqual 与 ==

作者: VinZZZZ | 来源:发表于2018-03-20 14:59 被阅读4次
  • isEqual 是NSObject提供的一个方法func isEqual(_ object: Any?) -> Bool, NSObject 默认实现了该方法,直接根据两个对象的指针是否相等,是则返回true.

  • == 是Equatable协议定义的方法 public static func ==(lhs: Self, rhs: Self) -> Bool,NSObject也默认实现了Equatable协议,并且默认是调用isEqual来比较的,调用堆栈如下:

    image.png

因此在自定义两个对象的相等比较时,

  • 如果该对象继承自NSObject, 则应该重写isEqual方法,这样能保证无论用 a.isEqual(b) 还是 a == b, 都能正确的调用isEqual里的逻辑;
  • 如果该对象是非继承自NSObject,则应该让其实现Equatable协议,并实现 == 方法。

参考:
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectComparison.html

https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/ObjectComparison.html

相关文章

  • hash与isEqual对象过滤

    参考:isEqual & hash参考:iOS开发 之 不要告诉我你真的懂isEqual与hash! 如何判断对象...

  • isEqual 与 ==

    isEqual 是NSObject提供的一个方法func isEqual(_ object: Any?) -> B...

  • iOS补充知识

    1、Hash方法与isEqual 1.1、== 运算符判断对象内存地址是否相同 1.2、isequal判断对象是否...

  • isEqual与hash

    说实话我原来根本不知道还有这样一个问题!? 1.isEqual和==有什么区别 ==判断两个对象是否相等就是在判断...

  • iOS 对象判断相等

    == isEqual 重写isEqual 为什么需要重写对象的hash值 参考

  • iOS中isEqual和Hash的笔记(一)

    iOS中isEqual和Hash的笔记(一) iOS中isEqual和Hash的笔记(一)

  • iOS isEqual与hash!

    详情:https://www.jianshu.com/p/915356e280fc ==运算符只是简单地判断是否是...

  • 7.组动画:CAAnimationGroup

    CAAnimationDelegate animationDidStart:if ([anim isEqual:[...

  • iOS 从源码来探讨 isEqual 和 hash

    iOS 从源码来探讨 isEqual 和 hash 系统 isEqual 实现原理 先看一段代码 打印001,可以...

  • isEqual

    今天看工程代码,发现原工程中定义了一个 const 常量字符串。并且通过 isEqual 来和这个常量字符串进行比...

网友评论

      本文标题:isEqual 与 ==

      本文链接:https://www.haomeiwen.com/subject/xecbqftx.html