2010-10-04 14 views
7

मैं क्या इस पोस्ट में किया जा रहा है की तरह कुछ हासिल करने के लिए चाहते हैं बनाना: Constants in Objective-Cएक निरंतर वस्तु शब्दकोश

हालांकि, मैं एक NSDictionary का निर्माण करना चाहते हैं।

अगर मैं की तरह कुछ कार्य करें:

constants.h

extern NSArray *const mFooKeys; 
extern NSArray *const mFooObjects; 
extern NSDictionary *const mFooDictionary; 

constants.m

NSArray *const mFooKeys = [[NSArray alloc] initWithObjects: 
            @"Foo", @"Bar", @"Baz", nil]; 
NSArray *const mFooObjects = [[NSArray alloc] initWithObjects: 
            @"1", @"2", @"3", nil]; 
NSDictionary *const mFooDictionary = [[NSDictionary alloc] dictionaryWithObjects:mFooObjects 
                     forKeys:mFooKeys]; 

मैं dealloc में जारी करने और सब कुछ ठीक है, या वहाँ अधिक यह करने के लिए है ? यह 'कुछ गलत है' सवाल से अधिक सतर्क सवाल है, लेकिन मुझे लगता है कि मैं वास्तव में इसे महसूस किए बिना इसे गड़बड़ कर सकता हूं।

उत्तर

5

अन्य कोर डेटा प्रकारों पर आधारित NSDictionary की तरह स्थिर होने के लिए, आपको या तो उस कक्षा में शामिल करने की आवश्यकता है जो निरंतर उपयोग कर रहे हों, या Singleton class बनाएं और वहां NSDictionary स्टोर करें। वहां केवल कुछ वर्ग प्रकार हैं जो आपके द्वारा देखे जा रहे कार्यान्वयन में काम नहीं करेंगे; आपके द्वारा देखे जा रहे स्थिरांक कोड को सही तरीके से काम करने के लिए किसी ऑब्जेक्ट के रूप में उपयोग करने की आवश्यकता होगी, लेकिन मुझे लगता है कि इस तरह के उद्देश्य को हराया जाता है। मैं स्पष्ट नहीं हूं कि सरल स्थिरांक कार्यान्वयन में आप क्या कर सकते हैं और क्या नहीं कर सकते हैं, लेकिन मैं एक ही मुद्दे में भाग गया और सिंगलटन डिजाइन पैटर्न मेरे लिए पूरी तरह से काम करता है। (किसी भी तरह से, आपको dealloc उचित रूप से होना चाहिए, भले ही वे आवेदन के जीवन के लिए मौजूद हों।)

0

आप इन्हें स्थिरांक घोषित कर रहे हैं, इसलिए वे एक ही वस्तुएं हैं जो आपके आवेदन के जीवनकाल के लिए चली रहेंगी। रिलीज करने की कोई आवश्यकता नहीं है, क्योंकि जब तक एप्लिकेशन को छोड़ दिया जाता है तब तक उनकी आवश्यकता होती है।

आप डेलोक में रिलीज़ नहीं करना चाहते हैं, क्योंकि यह हर बार रिलीज होगा जब प्रासंगिक वर्ग का एक उदाहरण रद्द हो जाएगा।

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