iOS判断对象相等 重写isEqual、isEqualToClass、hash
2016-09-05 13:46
513 查看
@interface Person @property NSString *name; @property NSDate *birthday; - (BOOL)isEqualToPerson:(Person *)person; @end @implementation Person - (BOOL)isEqualToPerson:(Person *)person { if (!person) { return NO; } BOOL haveEqualNames = (!self.name && !person.name) || [self.name isEqualToString:person.name]; BOOL haveEqualBirthdays = (!self.birthday && !person.birthday) || [self.birthday isEqualToDate:person.birthday]; return haveEqualNames && haveEqualBirthdays; } #pragma mark - NSObject - (BOOL)isEqual:(id)object { if (self == object) { return YES; } if (![object isKindOfClass:[Person class]]) { return NO; } return [self isEqualToPerson:(Person *)object]; } - (NSUInteger)hash { return [self.name hash] ^ [self.birthday hash]; }
转自:
http://www.tuicool.com/articles/yIf6BjQ
相关文章推荐
- iOS判断对象相等 重写isEqual、isEqualToClass、hash
- iOS判断对象相等 重写isEqual、isEqualToClass、hash
- iOS开发:==、isEqual与isEqualToString判断是否相等
- Objective-C中 ==、isEqual、isEqualToString判断字符串相等
- Objective-C中 ==、isEqual、isEqualToString判断字符串相等
- Java为满足两对象根据类的属性值相等从而对象相等,需要重写equal hashcde
- iOS 之类和对象的几个判断iskindOfClass.....
- Java中为满足两对象根据类的属性值相等 从而对象equal hashcode相等,需要重写equal hashcde
- Objective-C语法之isEqual ,isEqualToString , == 三者的区别
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- 判断对象是否相等---重写equals方法
- ctive-c中 isEqual ,isEqualToString , == 三者的区别
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- 判断对象的等同性isEqual和hash
- Objective-C中NSString的isEqual、isEqualToString、== 区别
- isEqual,isEqualTostring,==三者的区别
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- IOS NSString比较,截取,NSLog,NSRang,isEqualToString,stringWithFormat
- Objective-c中 isEqual ,isEqualToString , == 三者的区别
- iOS 浅析 isEqualToString和==之间的区别