arc4random: ограничивает значение сгенерированного случайного числа - PullRequest
0 голосов
/ 05 октября 2010

Создано приложение для 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 Ответ

6 голосов
/ 05 октября 2010
  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.
...