グローバル変数の実行方法は知っていますが、乱数関数を使用してグローバル変数を定義しようとすると、xcode で「初期化要素が定数ではありません」と表示されます。乱数関数は定数ではないため、コンパイラは乱数から変数を作成したくありません。
乱数を生成し、その同じ値を複数のアクションに使用するにはどうすればよいですか? (たとえば、色を定義してその値をラベルに書き込むには?)
コード:
#import "Slider_with_IBAppDelegate.h"
float * const hue = ((arc4random() % ((unsigned)100 + 1))/100.0);
//^this is where I get the error: "initializer element is not constant"
@synthesize label
//write value to label
- (IBAction) doButton {
label.text = [NSString stringWithFormat:@"%f", hue];
}
//set background color
- (void)applicationDidBecomeActive:(UIApplication*)application
{
self.label5.backgroundColor = [UIColor colorWithHue:hue
saturation:1.0
brightness:1.0
alpha:1.0];
}
- - 編集 - - -
提案をありがとう。それでもうまくいきませんが、何が間違っていますか?
新しいコード:
#import "Slider_with_IBAppDelegate.h"
float const hue = ((arc4random() % ((unsigned)100 + 1))/100.0);
//^I still get the error: "initializer element is not constant."
@synthesize label
//write value to label
- (IBAction) doButton {
label.text = [NSString stringWithFormat:@"%f", hue];
}
//^this is where I get the error "'hue' undeclared (first use of this function)"
//set background color
- (void)applicationDidBecomeActive:(UIApplication*)application
{
hue = ((arc4random() % ((unsigned)1000 + 1))/1000.0);
/*here I get the error "assignment of read-only variable 'hue.'"
If I insert "float" just before hue, I do not get this error,
but it still won't compile because of the error above.*/
self.label5.backgroundColor = [UIColor colorWithHue:hue
saturation:1.0
brightness:1.0
alpha:1.0];
}