objective-c – 当值等于时,为什么NSNumber指向相同的地址?

前端之家收集整理的这篇文章主要介绍了objective-c – 当值等于时,为什么NSNumber指向相同的地址?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_1@给出以下代码
int firstInt,secondInt;

firstInt = 5;
secondInt = 5;

NSNumber *firstNumber = [NSNumber numberWithInt:firstInt];
NSNumber *secondNumber = [NSNumber numberWithInt:secondInt];

为什么在地球上这两个NSNumber实例指向同一个地址?

这让我抓狂!

当然,如果你将secondInt更改为’4′,则所有工作都按预期工作.

谢谢,
杰里米

解决方法

这可能是编译器优化或实现细节:因为NSNumber是不可变的,所以不需要它们是单独的实例.

编辑:可能是一个实现优化思考它.随后使用相同的整数调用numberWithInt返回单例.

原文链接:https://www.f2er.com/c/119998.html

猜你在找的C&C++相关文章