美文网首页
第八条 理解对象等同性这一概念

第八条 理解对象等同性这一概念

作者: 谁夏了我的夏 | 来源:发表于2017-10-12 16:06 被阅读0次

使用“==”运算符来比较,往往是比较两个对象的指针,并不是比较两个指针所指向的对象

应当使用isEqual 来比较两个对象的等同性

判断对象等同性的关键方法在于

- (BOOL)isEqual:(id)object;

- (NSUInteger)hash;

翻译这两句意思是:当且仅当其“指针值”完全相等时,这两个对象才相等

如果用isEqual判断两个对象相等,那么他们的哈希码必须相同(hash)

等同性判定的执行深度  

两个数组,先判断数组所含对象个数是否相同,在判断对应位置的两个对象是否相同,如果均相同,则判断为相等,这叫做   深度等同性判定  (其实可以给定一个唯一标识符来判断两个类是否相等,只要两者的唯一标识符相等 ,那么他们必然相等)

总结来说 判断等同性 用isEqual方法

相同的对象哈希码必然相同,相同的哈希码的两个对象却未必相同

使用hash方法 要使用计算快哈希码碰撞几率小的算法

相关文章

网友评论

      本文标题:第八条 理解对象等同性这一概念

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