- (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]);}
因此,如果日期或dateString相等且标题相等,则认为两个对象相等.我们假设date和dateString不能为nil,否则我们也必须检查它.我们进一步假设,date和dateString之间没有已知的关系.
如何以满足两个相等对象必须具有相同哈希的要求的方式实现相应的-hash方法?
我尝试按照这个great algorithm实现它,但我很难将两个日期的OR条件转换为适当的哈希方法.
(不可否认,这个问题在某种程度上是学术性的,因为人们可以质疑这种平等是否有任何意义.因为我有兴趣找到一个通用的解决方案,请不要发一个答案我应该改变我的isEqual:.除了它可以正式证明没有合适的-hash方法可以存在.)
解决方法 您将仅基于标题创建哈希值,完全忽略date和dateString.- (NSUInteger)hash{ return self.Title.hash}
这将确保相等的对象始终具有相同的哈希值.具有相同散列的对象不需要相等.
总结以上是内存溢出为你收集整理的objective-c – 如何为-isEqual实现-hash:使用OR条件?全部内容,希望文章能够帮你解决objective-c – 如何为-isEqual实现-hash:使用OR条件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)