Wie werden Konstanten in Objective-C-Header-Dateien initialisiert?

7

Wie initialisierst du eine Konstante in einer Headerdatei?

Zum Beispiel:

%Vor%     
SK9 31.05.2010, 09:44
quelle

3 Antworten

16

Bei "öffentlichen" Konstanten deklarieren Sie es als extern in Ihrer Header-Datei (.h) und initialisieren es in Ihrer Implementierungsdatei (.m).

%Vor%

dann

%Vor%

Verwenden Sie enum , wenn nicht nur eine, sondern mehrere Konstanten zusammengehören

    
unbeli 31.05.2010, 10:08
quelle
12

Objective C-Klassen unterstützen keine Konstanten als Member. Sie können eine Konstante nicht wie gewünscht erstellen.

Die einfachste Möglichkeit, eine Konstante zu deklarieren, die einer Klasse zugeordnet ist, besteht darin, eine Klassenmethode zu definieren, die sie zurückgibt. Sie können auch extern verwenden, um direkt auf Konstanten zuzugreifen. Beide werden unten gezeigt:

%Vor%

Ein Vorteil der Klassenmethoden-Version ist, dass sie einfach erweitert werden kann, um konstante Objekte bereitzustellen. Sie können externe Objekte verwenden, müssen Sie sie in einer Initialisierungsmethode initialisieren (es sei denn, sie sind Zeichenfolgen). So sehen Sie oft das folgende Muster:

%Vor%     
JeremyP 31.05.2010 15:19
quelle
0

Eine einfache Methode für Werttyp-Konstanten wie Ganzzahlen ist die Verwendung des enum-Hacks von Ungläubigen.

%Vor%

Ein Vorteil gegenüber der Verwendung von extern ist, dass alles zur Kompilierzeit aufgelöst wird, so dass kein Speicher für die Variablen benötigt wird.

Eine andere Methode ist die Verwendung von static const , was den Enum-Hack in C / C ++ ersetzen sollte.

%Vor%

Ein kurzer Scan durch Apples Kopfzeilen zeigt, dass die Enum-Hack-Methode in Objective-C die bevorzugte Methode zu sein scheint und ich finde sie sauberer und benutze sie selbst.

Wenn Sie Gruppen von Optionen erstellen, sollten Sie auch NS_ENUM verwenden, um typensichere Konstanten zu erstellen.

%Vor%

Weitere Informationen zu NS_ENUM und dessen Cousin NS_OPTIONS finden Sie unter NSHipster .

    
Gerry Shaw 17.10.2013 03:37
quelle

Tags und Links