为什么这个Objective-C消息会产生散列?
我正在阅读一个库的开源代码,我注意到这个方法是散列的为什么这个Objective-C消息会产生散列?,objective-c,Objective C,我正在阅读一个库的开源代码,我注意到这个方法是散列的 -(NSUInteger)hash:(NSObject*)targetObject { return (NSUInteger)targetObject; } 为什么会是散列?目标是指向对象的指针。这意味着它是一个整数,您完全可以将其转换为nsuiger 它基本上意味着一个类的两个不同实例将始终具有不同的散列。如果isEqual是在参考平等的条件下定义的,那么这可能是一个有效的解决方案 [NSObject hash]的默认实现实际上返
-(NSUInteger)hash:(NSObject*)targetObject
{
return (NSUInteger)targetObject;
}
为什么会是散列?目标是指向对象的指针。这意味着它是一个整数,您完全可以将其转换为
nsuiger
它基本上意味着一个类的两个不同实例将始终具有不同的散列。如果isEqual
是在参考平等的条件下定义的,那么这可能是一个有效的解决方案
[NSObject hash]
的默认实现实际上返回self
1。这不是NSObject
的hash
方法的正确签名。2.您没有提供任何上下文。什么是targetObject
?@Maddy-yes。它不是NSObject
的正确hash
方法,因为它位于第三方库中。我添加了我忘记键入的targetObject
参数,因为我捕获了这个类的精神。