Ios 用等质量数法比较两个NSN数

Ios 用等质量数法比较两个NSN数,ios,comparison,null,nsnumber,Ios,Comparison,Null,Nsnumber,当我使用isEqualToNumber比较两个NSNumber时,如果两个数字都nil,则返回false。为什么排序比较[nil isEqual:nil]总是返回false,而nil==nil返回true 这是标准行为。您将从isEqueslToString:等中获得相同的结果。这样做更好,因为您可以对不相等的对象进行弱引用,这将在释放时变为相等 您可以使用类似于number1.intValue==number2.intValue的条件,在这种情况下,它将为2个nil对象返回YES。但是,对于n

当我使用
isEqualToNumber
比较两个NSNumber时,如果两个数字都
nil
,则返回false。为什么排序比较
[nil isEqual:nil]
总是返回
false
,而
nil==nil
返回
true

这是标准行为。您将从
isEqueslToString:
等中获得相同的结果。这样做更好,因为您可以对不相等的对象进行
引用,这将在释放时变为相等


您可以使用类似于
number1.intValue==number2.intValue
的条件,在这种情况下,它将为2个
nil
对象返回
YES
。但是,对于
nil.intValue=@0.intValue

[nil isEqual:nil]
比较对象,而
nil==nil
比较指针,也会得到
YES


指向nil的指针始终等于指向nil的指针。另一方面,不存在的对象不等于任何东西。

我猜这将是默认行为。但是你能告诉我返回false背后的概念是什么吗。这只是好奇。如果它的工作方式不同,它可能会导致许多错误,看看我用
weak
引用给出的示例就知道了。这就像你会比较两个房子的地址。如果他们有相同的地址,那么你可以说他们是平等的。但是如果你有两栋房子,而且都没有地址,你就不能说你谈论的是同一栋房子。有点牵强的比较,但我希望你能理解,谢谢。很好的例子。这就解决了我的好奇心。
[nil isEqual:someObjectPointer]
向nil发送一条消息,它根据定义返回0。看见