【发布时间】:2015-12-05 11:04:25
【问题描述】:
在我的应用程序中,我在比较两个 NSNumber 对象时不小心使用了“==”,如下所示:
NSNumber *number1;
NSNumber *number2;
后来,在设置了这些对象的int 值后,我不小心这样做了:
if (number1 == number2) {
NSLog(@"THEY'RE EQUAL");
}
而且,令人困惑的是,它起作用了!我可以发誓我被教导这样做:
if (number1.intValue == number2.intValue) {
NSLog(@"THEY'RE EQUAL");
}
在两个NSNumber 对象之间使用“==”是如何工作的,为什么?这是否意味着可以以这种方式比较它们,还是只是侥幸,而且通常不能保证每次都有效?这真的让我很困惑:(
【问题讨论】:
-
其实很多情况下“intValue”都会失败。例如,如果两个 NSNumber 都包含大整数,或者附近但不同的浮点数。
标签: ios objective-c compare nsnumber