【发布时间】:2011-11-17 03:34:06
【问题描述】:
我在我的应用程序中发现了一个错误:逻辑是我使用“==”比较两个NSNumbers,我相信它曾经有效。但它不再通过 iOS sdk 5,所以我需要改用isEqualToNumber。
iOS sdk 4.2 的任何人都可以尝试运行以下代码并给我结果。我尝试恢复到较旧的 Xcode 来自己测试它,但我无法做到。
NSNumber *num1 = [NSNumber numberWithInt:100];
NSNumber *num2 = [NSNumber numberWithInt:100];
if (num1 == num2)
{
NSLog(@"== YES");
}
else
{
NSLog(@"== NO");
}
【问题讨论】:
-
不是重复的,我不是要答案我知道答案是equalsToNumber。我问是否有人可以告诉我 iOS 4.2 上的结果是什么
-
“我相信它曾经可以工作”:根据上面链接的问题,从 0 到 12 的数字得到相同的 NSNumber 实例单例。但你不应该依赖它。
-
这没有帮助,就像我在问题中提到的那样,我需要知道 iOS 4.2 上的行为是什么。我不知道我怎么能更清楚。我使用的 NSNumbers 是数据库中的自动递增数字,大多为 6-7 位,所以链接的问题没有回答我的问题
-
问题是,如果这种行为在 4.2 中起作用是完全无关紧要的。这不是应该依赖的东西。您在 4.2 下有一个在 5.0 中暴露的错误
标签: objective-c nsnumber