为什么我的UILabel开始向后计数20亿?

Her*_*999 0 iphone int objective-c uilabel ios

我有一个UILabel在我的iPhone应用程序模拟器.它显示一个硬币计数,我有一个动作,计数增加1亿.我希望这个数字继续上升,但由于某种原因,一旦计数达到20亿,它会增加一个减号并开始倒计时,然后重新计算到20亿并再次退回,依此类推.

我希望能够显示更多的数字,即数万亿等...有谁知道这是怎么回事以及如何修复它所以标签数字将继续上升到我想要的高度.

我正在使用Xcode和Interface Builder并在模拟器中运行.我将数字存储在一个int变量中,如果这很重要的话.

Dru*_*erB 6

您将硬币计数存储在一个int,这就是问题所在.4字节int不能存储高于2,147,483,647的数字.如果你加1到2,147,483,647你会得到-2,147,483,648,这是最小的int.

如果你想存储更大的数字,你必须使用long可以存储 - (2 ^ 63)和2 ^ 63-1(或-9,223,372,036,854,775,808到9,223,372,036,854,775,807)之间的数字.

对其他详细信息.

  • 我猜您使用的是[格式说明符](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html)?在这种情况下,你必须在`d`之前添加一个`l`或`ll`来指定`long`或`long long`.否则它将被转换为`int`.`[NSString stringWithFormat:@"ld",coins];` (2认同)