2011-09-03 18 views
17

Ho visto 2 modi per creare variabili globali, qual è la differenza e quando si utilizza ciascuna?solo "extern const" vs "extern" solo

//.h 
extern NSString * const MyConstant; 

//.m 
NSString * const MyConstant = @"MyConstant"; 

e

//.h 
extern NSString *MyConstant; 

//.m 
NSString *MyConstant = @"MyConstant"; 

risposta

32

il primo è l'ideale per le costanti perché la stringa a cui punta non può essere cambiato:

//.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 =\ 

insomma, uso const (ex) per impostazione predefinita. il compilatore ti farà sapere se provi a cambiarlo lungo la strada, quindi puoi decidere se è stato un errore per tuo conto o se l'oggetto a cui punta potrebbe cambiare. è una buona protezione che consente di risparmiare un sacco di bug/headscratching.

l'altra variante è per un valore:

extern int MyInteger; // << value may be changed anytime 
extern const int MyInteger; // << a proper constant 
Problemi correlati