15 Stimmen

Ganzzahlige Konstanten

Wenn ich eine String-Konstante wie folgt deklariere:

Sie sollten eine Header-Datei erstellen wie

// Constants.h
extern NSString * const MyFirstConstant;
extern NSString * const MySecondConstant;
//etc.

Sie können diese Datei in jede Datei aufnehmen, die die Konstanten verwendet, oder in den vorkompilierten Header des Projekts.

Sie definieren diese Konstanten in einer .m-Datei wie

// Constants.m

NSString * const MyFirstConstant = @"FirstConstant";
NSString * const MySecondConstant = @"SecondConstant";

Wie kann ich ganzzahlige Konstanten definieren?

39voto

Andrew Grant Punkte 57342

Ersetzen Sie NSString* durch NSInteger.

Dies gilt für jeden konstanten Typ, sei es ein Primitivum wie int/float oder eine Klasse wie NSString oder NSInteger.

Das Einzige, worauf Sie achten müssen, ist, ob Sie eine Konstante oder einen Zeiger auf eine Konstante (wie beiNSString) wünschen, und wie diese in der .m-Datei initialisiert wird

Ganzzahliges Beispiel:

// constants.h
extern NSInteger const MyIntegerConstant;

// constants.m
NSInteger const MyIntegerConstant = 666;

(Anmerkung: für den Grund, warum NSInteger statt eines normalen "int", siehe diese Stelle )

Beispiel für eine Klasse:

// constants.h
extern MyClass* const MyClassConstant;

// constants.m
MyClass* const MyClassConstant= [[MyClass alloc] initWith: paramOne and:paramTwo];

0 Stimmen

Danke Andrew - Wo würde diese Klasse deallokiert werden?

0 Stimmen

Das ist nicht der Fall, der Speicher wird beim Beenden des Programms aufgeräumt. Wenn Sie dies manuell steuern möchten, können Sie die Funktionen initializeConsts / releaseConsts am Anfang/Ende Ihres Programms hinzufügen

1 Stimmen

Danke Andy - ich verwende den obigen Code in meinem Add und ich bekomme den Kompilierfehler in meinen Switch-Anweisungen: "MyIntegerConstant" entspricht nicht einer Ganzzahl

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X