2011-09-03 22 views
17

Küresel değişkenler oluşturmanın iki yolunu gördüm, fark nedir ve her birini ne zaman kullanıyorsunuz?"extern const" ile "extern" sadece

//.h 
extern NSString * const MyConstant; 

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

ve

//.h 
extern NSString *MyConstant; 

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

cevap

32

dize o değiştirilemez işaret ettiğinden eski sabitleri için idealdir: kısacası

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

, kullanım const varsayılan olarak (eski). Derleyici size yoldan ayrılmaya çalışırsanız bildirir - o zaman sizin adınıza bir hata olup olmadığına ya da işaret ettiği nesnenin değişip değişmeyeceğine karar verebilirsiniz. Çok fazla hata/headscratching tasarrufu sağlayan güzel bir koruma.

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

diğer varyasyon değer için

İlgili konular