NSNumber初始化问题

时间:2016-05-12 12:33:31

标签: ios ipad ios-simulator nsnumber

最近我发现有趣的问题与NSNumber初始化有关。

模拟器(9.3.1)和设备(9.3.1)之间出现差异。

假设我们有int x = 2; 现在我们正在初始化NSNumber并将其传递给方法。

NSNumber *test = [NSNumber numberWithInt:self.x];
[self.method setTestNumber: test];

这两行在模拟器和设备上都有正确的结果。

BUT 仅使用此行

[self.method setTestNumber:[NSNumber numberWithInt:self.x]];

有非常意外的结果。在模拟器上运行它NSNumber intValue等于2.

在设备上运行它的随机值不正确。怎么可能?设备是iPad 4 A1458。还在iPad 3 16GB上进行了测试。发生了同样的问题。你能验证这个问题吗?

1 个答案:

答案 0 :(得分:0)

编译器实际上会将这两个代码路径优化为完全相同的asm。他们之间没有区别。