最近我发现有趣的问题与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上进行了测试。发生了同样的问题。你能验证这个问题吗?
答案 0 :(得分:0)
编译器实际上会将这两个代码路径优化为完全相同的asm。他们之间没有区别。