构建了一个 iPhone 应用,在按下按钮时为标签生成一个随机数。
它工作正常,但我输入的任何值似乎都不会限制生成的随机数的值。始终为 9 位数字。
-(IBAction)genRandnum:(id)sender {
NSNumber *randomNumber = [NSNumber numberWithInt: (arc4random() % 5) + 1];
NSNumber *randomLabeltxt = [[NSString alloc] initWithFormat:@"It worked!", randomNumber];
randLabel.text = [NSString stringWithFormat: @"%d", randomLabeltxt];
[randomLabeltxt release];
}
如您所见,我在 % 符号后输入了 5,但它会生成 9 位数字。
最佳答案
NSNumber 是一个Objective-C 对象,因此您应该使用
%@
来显示它。%d
显示一个 9 位数字,因为这是该 NSNumber 的地址。NSString 与 NSNumber 不同。
正确且简化的代码应如下所示:
int randomNumber = (arc4random() % 5) + 1;
// no need to create an NSNumber if you do not need to store it into an NS container.
randLabel.text = [NSString stringWithFormat:@"It worked! %d", randomNumber];
// no need to create an intermediate NSString variable.
// you can directly assign the string to the label's text.
关于ios - arc4random:限制生成的随机数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3862471/