[NSArray containsObject]使用isEqual。 isEqual默认为地址。
说我想知道基于引用的[NSArray containsObject]是否?所以我想知道实际的对象,而不是它的对象eQual是否在数组中。
我想用它来比较核心数据对象。核心数据对象可能会被删除和解除引用,我想知道包含引用它的元素的所有数组会发生什么。
答案 0 :(得分:2)
isEqual默认为地址
在那种情况下,有问题吗?
听起来你想要存储isEqual
不使用地址的对象,但是仍然使用这个检查的地址,对吗?
没有-[containsObjectIdenticalTo:]
,但有一个-[indexOfObjectIdenticalTo:]
;如果它返回除NSNotFound以外的任何内容,则包含它。
if ([anArray indexOfObjectIdenticalTo:anObject] != NSNotFound) {
}
正如the NSArray reference docs明确指出:
如果对象的对象地址相同,则认为它们是相同的。
在Identical
和其他集合上有一整套NSArray
方法,正是出于此目的。