1. 若想检测对象的等同性,请提供“isEqual”与“hash”方法。
- (BOOL)isEqual:(id)object
{
if(self == object) return YES;
if([self class] != [object class] ) return NO;
ConcreteId *otherId = (ConcreteId*)object;
if(![someProperty isEqual:otherId.someProperty])
return NO;
// ……… 比较其他属性值
return YES;
}
① 特定类所具有的等同性判定方法
如果受测的参数与接收该消息的对象都属于同一类,那么就调用自己编写的判定方法。否则使用超类来判断。
- (BOOL)isEqual:(id)object
{
if([self class] ==[ object class ])
{
return [self isEqualToPerson:(EOCPerson*)object};
}else {
return [self isEqual:object];
}
}