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

Posted 萧十一郎oo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第八条:理解“对象等同性”这一概念相关的知识,希望对你有一定的参考价值。

isEqualToString 比isEqual 快,因为后者还要之行额外的步骤,因为它不知道受检测的对象类型。
 
NSOBject协议中有连个用于判断等同性的关键方法:
- (BOOL)isEqual:(id)object;
- (NSUInterger)hash;
 
要点:
  1. 若想检测对象的等同性,请提供“isEqual:” 于hash方法。
  2. 相同的对象必须具有相同的哈希码,但是两个相同的哈希码的对象却未必相同。
  3. 不要盲目的逐个检测每条属性,而是应该依照具体的需求来制定检测方案。
  4. 编写hash方法是,应该使用计算速度快而且哈希码碰撞几率低的算法。
 

以上是关于第八条:理解“对象等同性”这一概念的主要内容,如果未能解决你的问题,请参考以下文章

[OC学习笔记]对象消息运行期

《Effective Objective-C 2.0 》 阅读笔记 item8

《编写高质量iOS与OS X代码的52个有效方法》

OC 对象等同性

Effective Java 第八条:覆盖equals请遵守通用约定

6理解“属性”这一概念