使用 isEqual 来测试 NSNumber 是否相等

Using isEqual to test equality of NSNumber

我的印象是,要测试 NSNumber 的值,您可以使用 isEqual:

但是,当我使用以下代码测试整数值为 38 的 NSNumber 的值时,我得到的是 false 而不是 true。是否有我遗漏的微妙之处?

if ([self.adding isEqual:@38]) {
//they are equal
}
else {
//they are unequal
}

值得注意的是,当我使用 if ([self.adding intValue]==38) 时,我确实得到了预期的结果。

在调试器中,NSNumber 显示为 int(38)

使用 -isEqualToNumber: 进行数字相等性测试,它本身与 -compare: 方法的相等性概念相关联。

(NSNumber 被实现为 class 集群。-isEqual: 方法的核心可能是在寻找其他的细微之处,比如两个实例是否来自相同的实际类型或无论如何,这在处理集合中的存储时可能很重要,但不会帮助您检查 38。这与您应该使用 NSString 的 -isEqualToString: 方法进行等效比较的原因相同。