使用“==”运算符来比较,往往是比较两个对象的指针,并不是比较两个指针所指向的对象
应当使用isEqual 来比较两个对象的等同性
判断对象等同性的关键方法在于
- (BOOL)isEqual:(id)object;
- (NSUInteger)hash;
翻译这两句意思是:当且仅当其“指针值”完全相等时,这两个对象才相等
如果用isEqual判断两个对象相等,那么他们的哈希码必须相同(hash)
等同性判定的执行深度
两个数组,先判断数组所含对象个数是否相同,在判断对应位置的两个对象是否相同,如果均相同,则判断为相等,这叫做 深度等同性判定 (其实可以给定一个唯一标识符来判断两个类是否相等,只要两者的唯一标识符相等 ,那么他们必然相等)
总结来说 判断等同性 用isEqual方法
相同的对象哈希码必然相同,相同的哈希码的两个对象却未必相同
使用hash方法 要使用计算快哈希码碰撞几率小的算法
网友评论