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

Iphone [array containsObject:id]方法是如何工作的?,iphone,objective-c,Iphone,Objective C,[array containsObject:id]方法是如何工作的?是与地址比较,还是将给定对象属性与数组元素属性进行比较?您是否首先尝试查看此方法的属性 此方法通过向数组的每个对象发送isEqual:消息(并将一个对象作为参数传递给每个isEqual:消息),确定数组中是否存在一个对象 从方法上看: 如果两个对象相等,则它们必须具有相同的哈希值。如果在子类中定义isEqual:,并打算将该子类的实例放入集合中,则最后一点尤为重要。确保在子类中也定义了hash 我们可以从中得到的是,除非您正在比

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

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

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

从方法上看:

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


我们可以从中得到的是,除非您正在比较两个预定义类型的对象(例如,
NSArray
NSString
),其中已经有一种系统描述的方法对对象的内容进行散列并比较散列,否则您需要提供一个
-(nsuiger)哈希< /代码>方法,它返回一个无符号整数,其值对于您认为相等的对象将是相等的。

< p>它使用<代码>等量:


如果指针比较是您想要的,请使用
indexofobject-dentialto:
,如果没有匹配项,它将返回
NSNotFound

这将在查看文档30秒后得到完全回答。