OC 的对象都是指针类型 不能直接 p1 == p2 判断两个对象是够相等
NSObject 协议有两个关键方法判断等同性:
-isEqual
-(nsuinteger)hash
重写这两个方法是要遵守约定:对象相等 -> 则 hash值一定相等 hash相等 对象不一定相等
当对象存放到 hash结构的集合中时 集合会根据对象的hash值查找对象要 放置的位置 这样速度比较快一些
已经存入集合中的对象的hash不要改变 因为hash的值和对象存放的位置有关 但是如果已经存入的对象的hash值改变了 结合是不会动态的调整对象的位置的 此时对象存放的位置就是错误的 会导致一些bug
如果经常进行等同判断的话 那么就要定义自己的等同判定方法 因为这样可以省略了对对象类型的验证 效率更高
同时也要重写isEqual方法 让其想进行类型验证在调用 我们自定义的判定方法