隐式转换失去整数精度

时间:2014-02-03 15:27:44

标签: objective-c

任何人都可以帮助我 我正在设置你pushwoosh,我收到了这个错误

/PushNotificationManager.m:43:111:隐式转换失去整数精度:'NSInteger'(又名'long')到'int'

1 个答案:

答案 0 :(得分:4)

NSInteger在64位系统上的大小(等于long)大于int。警告告诉您,在将NSInteger转换为int时,您可能会丢失信息。您可以通过类型转换为(int)来抑制警告,但是由于精度损失,您可能会突然发现奇怪的计算。最好对所有整数变量使用NSInteger而不是int。有关更多讨论,另请参阅When to use NSInteger vs. int

隐式与显式:

NSInteger myLong = 11234;
int myInt = myLong; // implicit
int myInt2 = (int)myLong; // explicit by typecasting; you should know why you do this.