2011-09-03 21 views
17

मैंने वैश्विक चर बनाने के 2 तरीके देखे हैं, क्या अंतर है, और आप प्रत्येक का उपयोग कब करते हैं?"बाहरी कॉन्स" बनाम "बाहरी" केवल

//.h 
extern NSString * const MyConstant; 

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

और

//.h 
extern NSString *MyConstant; 

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

उत्तर

32

क्योंकि स्ट्रिंग यह अंक बदला नहीं जा सकता करने के लिए पूर्व स्थिरांक के लिए आदर्श है:

//.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 =\ 
संक्षेप में

, उपयोग स्थिरांक (पूर्व) डिफ़ॉल्ट रूप से। यदि आप इसे सड़क से बदलने की कोशिश करते हैं तो संकलक आपको बताएगा - फिर आप यह तय कर सकते हैं कि यह आपकी तरफ से गलती है या यदि ऑब्जेक्ट जो इंगित करता है वह बदल सकता है। यह एक अच्छा सुरक्षा है जो बहुत सारी बग/हेडक्रैचिंग बचाता है।

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

अन्य विभेद एक मूल्य के लिए है

संबंधित मुद्दे