/ / "External const" vs "extern" iba - objektív-c, globálne premenné, konštanty, externé

"External const" vs "external" iba - objektív-c, globálne premenné, konštanty, externé

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ď č. 1

prvý 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