Ich weiß, wie eine globale Variable zu tun, aber wenn ich versuche, eine globale Variable mit einer Zufallszahl-Funktion zu definieren, sagt xcode "Initialisierungselement ist nicht konstant." Der Compiler möchte keine Variable aus einer Zufallszahl machen, da die Zufallszahlenfunktion nicht konstant ist.Behalten Sie eine Zufallszahl über verschiedene Funktionen in Cocoa?
Wie erzeuge ich eine Zufallszahl und verwende dann denselben Wert für mehr als eine Aktion? (Zum Beispiel, um eine Farbe zu definieren und dann schreiben Sie diesen Wert auf ein Label?)
Code:
#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];
}
---- ------ bearbeiten
Danke für die Vorschläge . Es funktioniert immer noch nicht für mich, was mache ich falsch?
Neuer Code:
#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];
}
Ich habe versucht, aber dann konnte ich nicht den gleichen Wert für das Etikett aufrufen. Es gab mir den Fehler "Funktion undefined: erste Verwendung dieser Funktion" in doButton, obwohl es in applicationDidBecomeActive definiert wurde. – Evelyn
Was mache ich falsch? – Evelyn
Ich meinte, du sollst die Farbtondeklaration dort lassen, wo sie war (ohne den Zeiger *, wie Peter sagte), aber verschiebe die Zuweisung zu applicationDidBecomeActive: float hue; ... - (void) applicationDidBecomeActive: (UIApplication *) -Anwendung { hue = ((arc4random()% ((unsigned) 1000 + 1))/1000.0); So können beide Funktionen die Deklaration des Farbtons sehen, aber es wird bei jedem Start der Anwendung ein neuer Wert angegeben. – alltom