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返回单例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |