Ich habe eine iPhone-Anwendung mit ein paar benutzerdefinierten Farben für mein Thema. Da diese Farben für meine Benutzeroberfläche korrigiert werden, möchte ich die Farben in einer Klasse definieren, die enthalten sein soll (Constants.h und Constants.m). Wie mache ich das? (Sie einfach zu definieren funktioniert nicht, weil UIColors veränderbar sind und Fehler verursachen würden - Initiator nicht konstant).Ziel C Definition UIColor Konstanten
/* Constants.h */
extern UIColor *test;
/* Constants.m */
UIColor *test = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
Vielen Dank!
-1 für den ersten Satz - der Initialisierer ist was nicht konstant ist, nicht die Instanz. Für alle Absichten und Zwecke könnte UIColor (oder könnte morgen) interne Zustandsvariablen enthalten, die für den Benutzer unbelichtet sind, so dass sie uns konstant erscheinen, jedoch gibt es nichts in Obj-C, das dies erzwingt. Daher kann der Compiler keinen statischen Initializer verwenden, wie es wünschenswert wäre, da [UIColor colorWithRed: 1.0 grün: 1.0 blau: 1.0 alpha: 1.0] ein Methodenaufruf ist und daher die Ergebnisse nicht in das Textsegment geschrieben werden können. welches zur Kompilierzeit erstellt wird. –
Änderbar bedeutet, dass Sie die Instanz ändern können. Unveränderbar bedeutet, dass Sie die Instanz nicht ändern können. Konstante bedeutet, dass die Instanz nicht geändert werden kann. Ein UIColor ist nicht veränderlich und auch nicht konstant. Nur CFString/NSString hat wirklich konstante Instanzen, weil sie vom Compiler als Teil der Sprache behandelt werden. – drawnonward
Wie verweisen Sie dann diese Farbe in Ihrem Code? – scientiffic