2016-04-26 4 views
0

Ich muss eine globale Konstante zur Laufzeit setzen. Soweit ich verstehe, werden sie zur Kompilierzeit gesetzt, aber ich verwende eine globale Konstante als eine URL-Zeichenfolge, auf die in der gesamten App verwiesen wird. Abhängig von einer Option, die vor der Anmeldung des Benutzers ausgewählt wurde, muss die URL-Zeichenfolge geändert werden. Dies geschieht nur zur Laufzeit, bevor sich ein Benutzer anmeldet (zu Testzwecken)Wie setze ich eine globale Konstante von einer Funktion Obj C

Ich weiß, eine Alternative ist, einfach eine globale Variable zu verwenden (nicht konstant), aber ich denke, das ist nicht die beste Vorgehensweise.

Jede Hilfe wäre viel

Antwort

1

geschätzt werden Sie die URL in NSUserDefaults Klasse von Objective-C speichern und die URL ändern können, wenn angemeldeten Benutzers.

0

Eine Konstante in Objective-C hat eine sehr spezifische Bedeutung - es ist etwas zur Kompilierzeit bekannt. Wenn Sie zur Laufzeit einen Wert festlegen müssen, benötigen Sie eine schreibgeschützte Eigenschaft oder eine Funktion, die den Wert zurückgibt.

Wenn Sie sich für eine schreibgeschützte Eigenschaftsroute entscheiden, erstellen Sie ein globales Singleton-Objekt, und fügen Sie die gewünschte Eigenschaft hinzu. Geben Sie der Eigenschaft Lesezugriff und verwenden Sie sie in Ihrem gesamten Programm.

Wenn Sie eine globale Funktion verwenden möchten, können Sie es wie folgt tun:

// This goes in the header 
extern const char *urlString(); 

// This goes into the implementation file 
static char *urlStringVal = NULL; 
const char *urlString() { 
    return urlStringVal; 
} 

Jede Funktion in der gleichen Implementierungsdatei als urlString Zugriff auf urlStringVal hat zu schreiben, und es kann nach Bedarf ändern.

+0

Dank dasblinkenlight, tolle Infos. Werde beides ausprobieren – mrcurious

Verwandte Themen