加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 04:53:37 所属栏目:百科 来源:网络整理
导读:给出以下代码: int firstInt,secondInt;firstInt = 5;secondInt = 5;NSNumber *firstNumber = [NSNumber numberWithInt:firstInt];NSNumber *secondNumber = [NSNumber numberWithInt:secondInt]; 为什么在地球上这两个NSNumber实例指向同一个地址? 这让我
给出以下代码:
int firstInt,secondInt;

firstInt = 5;
secondInt = 5;

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

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

这让我抓狂!

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

谢谢,
杰里米

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读