D.h. ich möchte dies in meinen Code einbringen:
static BOOL MyConstantBool = YES;
Muss sie vor oder nach der @Implementierung stehen? Gibt es Regeln, wo das zu platzieren ist? Kann es auch in der Header-Datei stehen?
D.h. ich möchte dies in meinen Code einbringen:
static BOOL MyConstantBool = YES;
Muss sie vor oder nach der @Implementierung stehen? Gibt es Regeln, wo das zu platzieren ist? Kann es auch in der Header-Datei stehen?
Wenn Sie eine globale Variable definieren wollen, spielt es keine Rolle, wo Sie sie platzieren (innerhalb oder außerhalb der @Implementierung). In diesem Zusammenhang, static
bedeutet, dass die Variable nur innerhalb dieser Kompiliereinheit (.m-Datei) sichtbar ist.
Es gibt auch statische Variablen, die in Funktionen definiert werden. Sie funktionieren wie globale Variablen, sind aber nur innerhalb des Funktionsbereichs sichtbar.
Wenn es nach der @implementation
Block, dann können Sie ihn nicht in der @implementation
Block (es sei denn, er wurde an anderer Stelle mit extern
). So mache ich es:
//Constants.h
extern BOOL MyConstantBool;
extern NSString* MyConstantString;
//Constants.m
#import "Constants.h"
BOOL MyConstantBool = YES;
NSString* MyConstantString = @"Hello, world!";
//SomeOtherFile.m
#import "Constants.h"
//you can now use anything declared in Constants.h
Globals können so ziemlich überall untergebracht werden, wo Sie wollen; setzen Sie sie einfach an die Stelle, die stilistisch sinnvoll ist. Ich persönlich ziehe es vor, Globals am Anfang der Quelldateien zu sehen.
Sie können die Definition zwar in eine Header-Datei aufnehmen, aber ich empfehle das nicht. Jede Art von Definition in einer Header-Datei kann später zu mehrfach definierten Symbol-Linker-Fehlern führen. Wenn mehr als eine Kompiliereinheit die Variable sehen soll, können Sie sie nicht in eine Header-Datei schreiben. static
sowieso - Sie müssen sie irgendwo in einer Implementierungsdatei definieren und die extern
um sie unter verschiedenen Quelldateien sichtbar zu machen.
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.