Objective-C - Statischen und globalen Variablen?
In meine .m-Datei für eine Klasse mit dem Namen Ad , ich habe 3 statische Zeichenketten
static NSString *AdStateDisabled = @"disable";
static NSString *AdStateExpired = @"expired";
static NSString *AdStateActive = @"active";
Kann ich benutzen Sie einfach diese statischen Variablen der aktuellen Klasse, aber ich kann nicht nennen Sie von jeder anderen Klasse, gibt es einen Weg, um diese statischen Variablen global?
So zum Beispiel in meiner viewcontroller-Klasse-i-etwas tun zu können.
//HomeViewController.m
if ([self.ad.state isEqual:Ad.AdStateDisabled])
{
//do something
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügen Sie die folgenden Deklarationen auf Ihre HomeViewController.h-header, die müssten dann importiert werden, wohin Sie wollen Zugang zu den Saiten.
Dann ändern Sie Ihre Definitionen zu entfernen, 'static'.
Wenn Sie nicht möchten, dass ein Benutzer die strings importieren HomeViewController.h dann könnte man auch einfach definieren Sie diese Zeichenfolgen in AdState.h und legen Sie die Definitionen in AdState.m (und entfernen Sie Sie aus HomeViewController.m), nach der die Nutzer der string würde nur importieren müssen AdState.h verwenden Sie die Zeichenfolgen.
Erste, entfernen Sie die statische. Statische Variablen und Funktionen in C und Objective-C bedeutet, dass Sie sind nur sichtbar auf der aktuellen compilation-unit (das ist mehr oder weniger: nur die Datei, die Sie deklariert haben die statix variable in sehen können).
Nächsten, Sie müssen auch zu erklären, dass die Variablen in einem öffentlichen header-Datei mit "extern", wie die der Klasse, die der Klasse zugeordnet:
Können Sie dann zur Verwendung in anderen Dateien als gut, aber Sie würde nicht auf Sie zugreifen, als "Ad.AdStateDisabled", sondern nur als "AdStateDisabled".