[array containsObject:id]方法如何工作?

时间:2012-08-20 05:26:22

标签: iphone objective-c

[array containsObject:id]方法如何运作?是与地址进行比较还是将给定的对象属性与数组元素属性进行比较?

2 个答案:

答案 0 :(得分:1)

您是否首先尝试查看此方法的documentation

  

此方法通过向每个数组的对象发送isEqual:消息(并将anObject作为参数传递给每个isEqual:消息)来确定数组中是否存在anObject。

来自isEqual:方法:

  

如果两个对象相等,则它们必须具有相同的哈希值。如果在子类中定义isEqual:并打算将该子类的实例放入集合中,则最后一点尤为重要。确保您还在子类中定义hash

我们可以从中得到的是,除非你要比较两个预定义类型的对象(例如NSArrayNSString),其中已经有一个系统描述的方法来散列对象的内容和比较哈希值时,需要提供一个- (NSUInteger)hash方法,该方法返回一个无符号整数,对于认为相等的对象,其值将相等。

答案 1 :(得分:1)

它使用isEqual:

如果指针比较符合您的要求,请使用indexOfObjectIdenticalTo:,如果没有匹配则返回NSNotFound