为什么这个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
参数,因为我捕获了这个类的精神。