2009-11-02 10 views
7

अर्थात मैं अपने कोड में यह लाना चाहते हैं: पहले या बाद में @implementationमुझे स्थैतिक चर घोषित करने के लिए कहां है?

static BOOL MyConstantBool = YES; 

यह होना चाहिए? क्या नियम हैं जहां इसे रखा जाए? क्या यह हेडर फ़ाइल में भी जा सकता है?

+0

डुप्लिकेट? http://stackoverflow.com/questions/1662828/how-to-define-a-bool-constant –

+5

@Alex - काफी नहीं। दूसरा यह था कि उन्हें कैसे परिभाषित किया जाए। यह उन्हें परिभाषित करने के लिए है। –

उत्तर

10

आप एक वैश्विक चर को परिभाषित करना चाहते हैं, तो यह कोई फर्क नहीं पड़ता, जहां आप इसे डाल (अंदर या @implementation के बाहर)। इस संदर्भ में, static मतलब यह है कि चर केवल इस संकलन इकाई (मीटर फ़ाइल) के भीतर से दिख रहा है।

भी स्थैतिक चर, जो कार्यों में परिभाषित कर रहे हैं। वे वैश्विक चर की तरह काम करते हैं, लेकिन केवल कार्य के दायरे में ही दिखाई देते हैं।

1

यदि यह @implementation ब्लॉक के बाद है, तो आप यह @implementation ब्लॉक में उपयोग नहीं कर सकते (जब तक यह आगे कहीं और घोषित किया गया है extern का उपयोग)। यहां बताया गया है कि मैं इसे कैसे करता हूं:

//Constants.h 
extern BOOL MyConstantBool; 
extern NSString* MyConstantString; 


//Constants.m 
#import "Constants.h" 
BOOL MyConstantBool = YES; 
NSString* MyConstantString = @"Hello, world!"; 


//SomeOtherFile.m 
#import "Constants.h" 
//you can now use anything declared in Constants.h 
+0

एक ही समय में 'स्थिर 'और' बाहरी 'नहीं हो सकता है। –

+0

@ करल एसीके! सुधारों के लिए धन्यवाद। मैंने जवाब संपादित कर लिया है –

0

ग्लोबल कहीं भी कहीं भी जा सकते हैं; बस इसे किसी भी जगह स्टाइलिस्टिक रूप से समझ में डाल दें। मैं व्यक्तिगत रूप से स्रोत फ़ाइलों के शीर्ष के पास ग्लोबल्स देखना पसंद करता हूं।

आप एक हेडर फाइल में परिभाषा डाल सकता है, मैं इसकी सलाह नहीं देते। किसी हेडर फ़ाइल में किसी प्रकार की परिभाषा डालने से सड़क पर गुणा-परिभाषित प्रतीक लिंकर त्रुटियां हो सकती हैं। यदि आपको चर देखने के लिए एक से अधिक संकलन इकाई की आवश्यकता है, तो आप इसे static बना सकते हैं - आपको इसे कहीं भी कार्यान्वयन फ़ाइल में परिभाषित करने की आवश्यकता होगी और extern का उपयोग विभिन्न स्रोत फ़ाइलों के बीच दृश्यमान करने के लिए करें।

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