NSSet的containsObject:和member:方法有什么区别?

14

这两个属于NSSet类的方法有什么区别:

-(BOOL)containsObject:(id)anObject
-(id)member:(id)object 
1个回答

20

答案在返回值中。containsObject 根据你发送的对象是否属于该特定集合,返回 YES 或 NO。

member 返回 id,这意味着如果该对象是集合的一部分,则返回实际对象。

举个例子,你有一个 NSSet,名为 aSet,其中包含一个对象 anObject。anObject 属于该集合。

[aSet containsObject:anObject]; //returns YES
[aSet member:anObject]; //If the set contains an object equal to object (as determined by isEqual:) then that object (typically this will be object), otherwise nil.

如果一个对象在集合中不存在:

[aSet containsObject:anObject]; //return NO
[aSet member:anObject]; //return nil

7
我敢打赌,member: 方法的返回值可能 不是 anObject。也就是说,如果集合中包含一个与参数通过 isEqual: 方法相等的对象,则会返回该集合中的对象。 - bbum
@bbum - 是的,绝对是这样。我会更新答案,使其更加清晰明了。 - sosborn
2
但实际问题在于,containsObject:是否还使用了isEqual:来确定结果,或者它使用的是isIdenticalToObject:。 - Avi Shukron
1
@AvrahamShukron 包含对象实际上使用 isEqual: 如果底层类已经实现了它。 - Kaan Dedeoglu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接