ios - arc4random:限制生成的随机数的值

标签 ios objective-c random arc4random

构建了一个 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 位数字。

最佳答案

  1. NSNumber 是一个Objective-C 对象,因此您应该使用%@ 来显示它。 %d 显示一个 9 位数字,因为这是该 NSNumber 的地址。

  2. 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/

相关文章:

objective-c - 如何从包含任意对象的 NSSet 创建排序的 NSArray?

ios - 如何在 iOS 中只获取一次随机数

ios - 我什么时候需要调用 -[UIViewController initWithNibName :bundle:]?

ios - 当我在不使用 performSegueWithIdentifier 的情况下单击按钮时,不会调用 prepareForSegue

ios - 如何使 Storyboard 字符串保持最新?

objective-c - 为什么UIPopoverController KVO不兼容?

.net - System.Guid.NewGuid() 的随机性如何? (拿两个)

javascript - 如何从 XML 中选择一个随机子元素并显示子元素;使用JS?

ios - UINavigationController 右键消失

ios - 当多行标签的字体调整以适应可用宽度时,如何使多行标签的高度正确?