0

[NSArray containsObject] 使用 isEqual。isEqual 默认为地址。

假设我想知道 [NSArray containsObject] 是否基于参考?所以我想知道那个实际的对象,而不是一个与其相等的对象,是否在数组中。

我想用它来比较核心数据对象。核心数据对象可能会被删除和取消引用,我想知道所有包含引用它的元素的数组会发生什么。

4

1 回答 1

2

isEqual 默认为地址

在那种情况下,有问题吗?

听起来您想将对象存储在isEqual不使用地址的位置,但使用该地址进行此​​检查,对吗?

没有-[containsObjectIdenticalTo:],但有一个-[indexOfObjectIdenticalTo:];如果返回除了 NSNotFound 之外的任何内容,则包含它。

if ([anArray indexOfObjectIdenticalTo:anObject] != NSNotFound) {
}

正如NSArray 参考文档明确指出的那样:

如果对象地址相同,则认为对象相同。

有一整套Identical方法NSArray和其他集合,正是为了这个目的。

于 2012-10-30T23:56:14.230 回答