tj chcę przynieść to w moim kodu:Gdzie muszę zadeklarować zmienne statyczne?
static BOOL MyConstantBool = YES;
Musi być przed lub po @implementation? Czy istnieją zasady gdzie to umieścić? Czy może również przejść do pliku nagłówkowego?
tj chcę przynieść to w moim kodu:Gdzie muszę zadeklarować zmienne statyczne?
static BOOL MyConstantBool = YES;
Musi być przed lub po @implementation? Czy istnieją zasady gdzie to umieścić? Czy może również przejść do pliku nagłówkowego?
Jeśli chcesz zdefiniować zmienną globalną, nie ma znaczenia, gdzie ją umieścisz (wewnątrz lub na zewnątrz @ implementacji). W tym kontekście static
oznacza, że zmienna jest widoczna tylko z poziomu tej jednostki kompilacji (pliku .m).
Istnieją również zmienne statyczne, które są zdefiniowane w funkcjach. Działają one jak zmienne globalne, ale są widoczne tylko z zakresu funkcji.
Jeśli jest to po bloku @implementation
, to nie można go użyć w bloku @implementation
(chyba, że został on zgłoszony w innym miejscu przy użyciu extern
). Oto, jak to zrobić:
//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
Nie może być jednocześnie "statyczny" i "zewnętrzny". –
@ ACAR ACK! Dziękuję za poprawienie mnie. Edytowałem odpowiedź –
Globale mogą iść prawie wszędzie, gdzie chcesz; po prostu umieść to w jakimkolwiek miejscu ma sens stylistycznie. Wolę oglądać osobiście globale u góry plików źródłowych.
Chociaż można umieścić definicję w pliku nagłówkowym, nie polecam go. Umieszczenie dowolnego rodzaju definicji w pliku nagłówkowym może prowadzić do wielokrotnie zdefiniowanych błędów łącznika symboli na trasie. Jeśli potrzebujesz więcej niż jednej jednostki kompilacji, aby zobaczyć zmienną, nie możesz jej mimo to zrobić static
- musisz ją gdzieś zdefiniować w pliku implementacji i użyć extern
, aby była widoczna wśród różnych plików źródłowych.
Duplikat? http://stackoverflow.com/questions/1662828/how-to-define-a-bool-constant –
@Alex - niezupełnie. Drugim było to, jak je zdefiniować. Tutaj można je zdefiniować. –