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

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

概述给出以下代码: int firstInt, secondInt;firstInt = 5;secondInt = 5;NSNumber *firstNumber = [NSNumber numberWithInt:firstInt];NSNumber *secondNumber = [NSNumber numberWithInt:secondInt]; 为什么在地球上这两个NSNumb 给出以下代码:
int firstInt,secondInt;firstInt = 5;secondInt = 5;NSNumber *firstNumber = [NSNumber numberWithInt:firstInt];NSNumber *secondNumber = [NSNumber numberWithInt:secondInt];

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

这让我抓狂!

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

谢谢,
杰里米

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

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

总结

以上是内存溢出为你收集整理的objective-c – 当值等于时,为什么NSNumber指向相同的地址?全部内容,希望文章能够帮你解决objective-c – 当值等于时,为什么NSNumber指向相同的地址?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1242967.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存