HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了iOS – 为什么我比较两个NSNumbers与“==”工作?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,当比较两个NSnumber对象时,我不小心使用了“==”:
NSnumber *number1;
NSnumber *number2;

后来,在这些对象的int值被设置之后,我不小心做到了:

if (number1 == number2) {
    NSLog(@"THEY'RE EQUAL");
}

而且,令人困惑的是,它的工作!我可以发誓我被教导这样做:

if (number1.intValue == number2.intvalue) {
    NSLog(@"THEY'RE EQUAL");
}

两个NSnumber对象之间如何使用“==”工作,为什么?这是否意味着以这种方式进行比较呢,还是只是一个侥幸,这通常不能保证每次都能工作?真的让我感到困惑:(

解决方法

这可能是一个侥幸

NSHipster

您的语句可能被评估为YES,因为number1和number2指向同一个对象.如果它们具有相同的值但是两个不同的对象,这将不起作用.

NSnumber变量指向相同的明显原因是您明确地将一个指定给另一个,如下所示:

number1 = number2;

但还有另一件事.从this answer

但无论如何,最安全的使用isEqualTonumber:,因为没有告诉其他“事情”潜在的深度的代码,可能或可能不会导致它评估是

RyPress

大佬总结

以上是大佬教程为你收集整理的iOS – 为什么我比较两个NSNumbers与“==”工作?全部内容,希望文章能够帮你解决iOS – 为什么我比较两个NSNumbers与“==”工作?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。