0

ボタンが押されたときにラベルに乱数を生成する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桁の数字が生成されます。

4

1 に答える 1

6
  1. NSNumber は Objective-C オブジェクトであるため、%@表示するには を使用する必要があります。%dその NSNumber のアドレスであるため、9 桁の数字が表示されます。

  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.
于 2010-10-05T09:48:02.337 に答える