根据“等同性”(equality)来比较对象是一个非常有用的功能。不过,按照==操作符比较出来的结果未必是我们想要的,因为该操作比较的是两个指针本身,而不是其所指的对象。应该使用NSObject协议中声明的“isEqual”方法来判断两个对象的等同性。
自定义的Objective-C对象要实现“isEqual”,需得重写两个关键方法:
- (BOOL)isEqual:(id)object;
- (NSUInteger)hash;
NSObject类对- (BOOL)isEqual:(id)object方法默认的实现是,只有当其指针值完全相等时,这两个对象才相等。