11 Stimmen

Wie kann ich ein NSArray als globale Konstante verwenden?

Ich verwende einen Satz von Constant.m Dateien, eine pro Ziel, um bestimmte Dinge für jedes Ziel zu definieren. Zum Beispiel:

// Constants.h
extern NSString * const kDatabaseFileName;
//Constants.m
NSString * const kDatabaseFileName = @"target_one.sqlite";

Ich möchte auch ein NSArray für jedes meiner Ziele definieren:

NSArray * const kLabelNames = [[NSArray alloc] initWithObjects:
    @"nameLabel", @"addressLabel", nil];

Aber das ergibt "Fehler: Initialisierungselement ist nicht konstant". Die Verwendung von 'arrayWithObjects` funktioniert auch nicht. Liegt das daran, dass die Strings in meinem Array keine Konstanten sind?

Wie kann ich ein Array als globale Konstante einrichten? Danke!

0 Stimmen

1voto

StilesCrisis Punkte 15626

Wenn Sie eine NULL-Prüfung bei jeder Verwendung vermeiden wollen, können Sie die NSObject +initialize-Methode unterklassifizieren. Diese wird einmal aufgerufen, wenn Ihre Klasse zum ersten Mal instanziiert wird (und ein weiteres Mal pro Unterklasse, wenn Unterklassen instanziiert werden), und ist ein sehr guter Ort, um diese Art der Initialisierung durchzuführen.

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html%23//apple_ref/occ/clm/NSObject/initialize

1 Stimmen

Wenn Sie das verlinkte Dokument aufmerksam lesen, werden Sie feststellen, dass initialize kann (und wird oft) mehr als einmal aufgerufen werden: "Die Laufzeit sendet initialize zu jeder Klasse in einem Programm genau ein Mal kurz vor der Klasse, oder jede Klasse, die von ihr erbt wird die erste Nachricht aus dem Programm heraus gesendet." [Hervorhebung hinzugefügt]

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