NSSet如何确保它的唯一性对象?

Ans*_*Ans 1 nsset ios

我想知道如何NSSet确保它只有唯一的对象?当我们尝试添加重复值时,那么它在哪个条件上决定它已经具有此值?我想知道潜在的唯一性标准.

das*_*ght 5

NSSet使用对象的isEqual:方法实现来决定对象的相等性.它还hash用于使查找更快.

-(BOOL)isEqual:(id)other;
-(NSUInteger)hash;
Run Code Online (Sandbox Code Playgroud)

当两个对象相等时,它们的hash方法必须返回相同的值(具有相同的对象hash,但是,可能不一定彼此相等).

当你的hashisEqual:正确实施,NSSet可以决定通过检查只对象,它们的极少数平等hash"碰撞"与hash您要添加到集合中的对象.