Videl som 2 spôsoby vytvárania globálnych premenných, aký je rozdiel a kedy ich používate?
//.h
extern NSString * const MyConstant;
//.m
NSString * const MyConstant = @"MyConstant";
a
//.h
extern NSString *MyConstant;
//.m
NSString *MyConstant = @"MyConstant";
odpovede:
33 pre odpoveď č. 1prvý je ideálny pre konštanty, pretože reťazec, na ktorý odkazuje, nemožno zmeniť:
//.h
extern NSString * const MyConstant;
//.m
NSString * const MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << YAY! compiler error
and
//.h
extern NSString *MyConstant;
//.m
NSString *MyConstant = @"MyConstant";
...
MyConstant = @"Bad Stuff"; // << NO compiler error =
skrátka, používajte implicitne const (predtým). kompilátor vás oznamuje, ak sa pokúsite zmeniť to po ceste - potom sa môžete rozhodnúť, či ide o chybu vo vašom mene alebo či objekt, na ktorý odkazuje, sa môže zmeniť. je to pekná záruka, ktorá šetrí veľa chýb / šatov.
druhá variácia je pre hodnotu:
extern int MyInteger; // << value may be changed anytime
extern const int MyInteger; // << a proper constant