2009-04-29 16 views
6

Memory Management Programming Guide for Cocoa में ऐप्पल शीर्ष-स्तरीय ऑब्जेक्ट्स के बारे में बात करता है। वे कहते हैं, कि मुझे उनमें से प्रत्येक के लिए एक आउटलेट चाहिए।ऐप्पल मेमोरी मैनेजमेंट प्रोग्रामिंग गाइड में किस "टॉप-लेवल ऑब्जेक्ट्स" के बारे में बात कर रहा है?

अगर कोई उच्च-स्तरीय वस्तुओं आप दुकानों में स्टोर नहीं करते , तथापि हैं, तो आप बनाए रखने चाहिए या तो सरणी loadNibNamed द्वारा लौटे: मालिक: विकल्प: विधि या सरणी अंदर वस्तुओं उन वस्तुओं को से समय-समय पर जारी करने से रोकने के लिए।

तो "टॉप-स्तरीय ऑब्जेक्ट" के साथ उनका क्या अर्थ है? मैं कहूंगा कि वे रूट व्यू और विंडो के बारे में बात करते हैं। और क्या? और क्या यह संकेत सिर्फ उन मामलों के लिए है जिनमें मैं अपने निब को मैन्युअल रूप से लोड करना चाहता हूं? या यह किसी भी निब और किसी भी मामले के लिए आवेदन करता है?

+1

+1 मैं वास्तव में स्मृति प्रबंधन के बारे में आपके प्रश्नों का आनंद ले रहा हूं। अक्सर, हम उन प्रथाओं के पीछे कारणों को याद दिलाने के बिना हमारे प्राप्त स्मृति प्रबंधन प्रथाओं को मंजूरी के लिए लेते हैं। एक साथ लिया गया, आपके हालिया एसओ पोस्ट आईफोन मेमोरी प्रबंधन पर एक ऐप्पल एफएक्यू होने के योग्य हैं! –

+0

धन्यवाद! मुझे यकीन है कि वे दूसरों की भी मदद करने जा रहे हैं। – Thanks

उत्तर

6

शीर्ष-स्तरीय ऑब्जेक्ट्स ऑब्जेक्ट्स हैं जो इंटरफ़ेस बिल्डर में मुख्य निब विंडो में फ़ाइल के मालिक और एप्लिकेशन के अलावा दिखाई देती हैं।

+0

असल में, कम से कम मैकोज़ पर, एप्लिकेशन एक शीर्ष-स्तरीय ऑब्जेक्ट भी है। NSTopLevelObjects सरणी loadNibNamed द्वारा लौटाई गई: स्वामी: विकल्प :, कुछ अजीब कारणों से, एनएसएप्लिकेशन भी शामिल है। – uliwitness

3

हां, यह उन मामलों के बारे में है जहां आप निब मैन्युअल रूप से लोड करते हैं, अन्यथा आपने लोड नहीं किया होगा नाम: नाम: विकल्प:

+0

आईआईआरसी जो मैक के लिए सच है, लेकिन UIKit के लिए, आपको UIViewController में -दृश्य के अलावा सभी शीर्ष स्तरीय ऑब्जेक्ट्स को भी बनाए रखना होगा, या लोड होने के बाद इसे ऑटोरेलेज़ किया जाएगा। या क्या मैं यहां मतभेदों का गलत वर्णन कर रहा हूं? – uliwitness

0

फ़ाइल के स्वामी, फर्स्ट रेस्पॉन्डर, व्यू के साथ विंडो में दिखाई देने वाले ऑब्जेक्ट शीर्ष स्तर की ऑब्जेक्ट्स हैं। जो भी आप दृश्य में जोड़ते हैं वह सबव्यूव होगा - सभी सबव्यूव्स उनके प्रत्यक्ष पर्यवेक्षण द्वारा बनाए रखा जाता है, इसलिए उन्हें कहीं और बनाए रखने की आवश्यकता नहीं होती है। दृश्य स्वयं दृश्य नियंत्रक द्वारा बनाए रखा जाता है, ताकि इसे बनाए रखने की आवश्यकता न हो।

यदि आप गैर-दृश्य ऑब्जेक्ट्स या विचारों को जोड़ते हैं जिन्हें आप तुरंत अपने मुख्य दृश्य में नहीं डालते हैं (जैसे टूल बार बटन जो वर्तमान में प्रदर्शित नहीं हो रहे हैं) तो आपको उन्हें बनाए रखने की आवश्यकता है, या वे रिलीज़ हो जाएंगे ।

@property(nonatomic, retain) IBOutlet UIBarButtonItem * myButton; 

यह -setMyButton का कारण बनता है: फ़ाइल के मालिक पर कहा जा सकता है (यदि इस कोड को फ़ाइल के मालिक में है) और वस्तु आईबी के माध्यम से जुड़ा है ऐसा करने के लिए मेरे पसंदीदा तरीका इस तरह, @property का उपयोग कर IBOutlets साथ है इस संपत्ति में संग्रहीत करने के लिए भेजा गया।

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

  • कोई संबंधित समस्या नहीं^_^