gpt4 book ai didi

objective-c - 为什么 == 对具有相同值的 NSNumber 返回 true?

转载 作者:搜寻专家 更新时间:2023-10-30 19:41:20 26 4
gpt4 key购买 nike

我通常使用 isEqualToNumber: 来检查 NSNumber 是否相等。以下应该不起作用,但它确实有效,为什么?

NSNumber *number1 = @5;
NSNumber *number2 = [NSNumber numberWithLong:5];

if (number1 == number2)
{
NSLog(@"Equal");
}

它应该检查指针地址而不是实际值。编译器有什么变化吗?

我正在使用 Xcode 5.1

最佳答案

因为它们是同一个对象。小型 NSNumber 的实例由其实现缓存,现在 Objective-C 实际上对一定范围内的 NSNumber 使用标记。

类似地,[@"someString"copy] 将简单地返回 @"someString"。只要语义得到正确保留,框架就可以在幕后自由地做各种类似的事情。

关于objective-c - 为什么 == 对具有相同值的 NSNumber 返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22541264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com