什么是NSNumber允许的最高int值?我在这些论坛的其他地方看到了答案,因此我在这里深感困惑。NSNumber限制?
int miles = 35000;
vehicle.mileage = [NSNumber numberWithInt:miles];
NSLog(@"int value = %d", miles);
NSLog(@"mileage = %@", vehicle.mileage);
输出是:
int value = 35000
mileage = -30536
我必须在这里失去了一些可怕的容易,但为什么这不能正常工作可有人向我解释?
UPDATE: 进一步细算,vehicle.mileage是越来越正确设置为35000,但是当我通过的NSLog显示此(@ “%@”,vehicle.mileage)它被不正确地输出它。当它停止工作时,我还没有找到“魔法”的价值,因为到目前为止,它的价值高达30,000。
如果您用'NSNumber * mileage = [NSNumber numberWithInt:miles]'替换'vehicle.mileage = [NSNumber numberWithInt:miles]',然后更改'NSLog(@“mileage =%@”,vehicle.mileage); '到'NSLog(@“mileage =%@”,里程数);'你会得到预期的结果:'里程= 35000',所以我期望问题是''里程'属性'车辆'。检查一下它的制定者是不是在做一些有趣的事情。它绝对是'NSNumber'类型吗? – sjs
它看起来正确。 – Minthos
是的,它肯定是NSNumber类型 - @property(nonatomic,retain)NSNumber * mileage; – kschins