Sie können das nicht so machen.
const NSString *global;
NSString const *global;
bedeutet sowohl einen Zeiger auf einen konstanten NSString
Objekt (das geändert werden kann). In Objective-C machen konstante Objekte keinen Sinn. Der Compiler kann die Konsistenz von Objekten nicht erzwingen. Es kann nicht wissen, ob eine Methode den internen Zustand eines Objekts ändert oder nicht. Außerdem nehmen alle Klassen in der Bibliothek immer Zeiger auf nicht konstante Objekte als Parameter für ihre Methoden, so dass alle const Objektzeiger eine Menge Warnungen verursachen.
Auf der anderen Seite gibt es konstante Zeiger auf Objekte, die wie folgt erklärt werden:
NSString * const global;
Dies bedeutet, dass die Zeiger zeigen auf ein reguläres NSString Objekt, aber es ist Wert kann nicht verändert werden. Dies bedeutet, dass Sie auch den Wert des Zeigers initialisieren müssen (er kann später nicht mehr geändert werden). Dies wird verwendet, um Konstanten zu definieren. Aber das funktioniert nur mit NSStrings
und String-Literalen. Für alle anderen Klassen gibt es keine Möglichkeit, ein Konstantenobjekt zur Kompilierungszeit anzugeben, das für die Initialisierung benötigt wird. Und in diesem Fall ist es eine wahre Konstante - String-Literale sind per Definition unveränderlich.
Aber in Ihrem Fall können Sie die const
beseitigen. Sie möchten den Zeiger später ändern, so dass es kein NSString * const
sein kann. Wenn Sie auf einem globalen bestehen, müssen Sie es nur zu einem normalen NSString *
machen. Auf der anderen Seite - Globals sind böse. Sie sollten Ihr Design ändern, damit Sie es nicht brauchen.
Ich schlage vor, Sie überdenken mit einer globalen Variablen. es gibt wahrscheinlich eine bessere Alternative. Wenn Sie jemals mit diesen Klassen gleichzeitig programmieren, werden Sie es bereuen, eine globale Variable zu verwenden. – sebnow