假设我有这个-isEqual:方法:
- (BOOL)isEqual:(MyObject*)aObject {
if (![aObject isKindOfClass:[MyObject class]]) {
return NO;
}
return ([self.dateString isEqualToString:aObject.dateString] || [self.date isEqual:aObject.date]) &&
((!self.title && !aObject.title) || [self.title isEqualToString:aObject.title]);
}
date因此,如果ORdateString相等且 相等,则认为两个对象title相等。我们在这里假设date并且dateString不能为零,否则我们也必须检查它。date我们进一步假设和之间没有已知的关系dateString。
如何实现相应的-hash方法以实现两个相等对象必须具有相同哈希的要求?
我试图通过遵循这个伟大的算法来实现它,但我很难将两个日期的 OR 条件转换为适当的哈希方法。
(诚然,这个问题有点学术性,因为人们可以质疑这种平等是否有意义。由于我有兴趣找到一个通用的解决方案,请不要发布答案我应该改变我的isEqual:。除非它可以正式证明没有合适的-hash方法存在。)