Objective-C Delegate Pointers -
यदि हम निम्न कोड लिखते हैं:
ExplorerAppDelegate * appDelegate = (ExplorerAppDelegate *) [ [UIApplication साझा आवेदक] प्रतिनिधि];
यह मूल प्रतिनिधि सूचक का एक संदर्भ बनाता है, लेकिन:
- क्या यह संदर्भ संख्या में वृद्धि करता है?
- क्या हमें स्पष्ट रूप से
[ExplorerAppDelegate retain]
के रूप में कॉल करना है, या बिल्कुल नहीं? - क्या हो रहा है, बिल्कुल?
इसके प्रयोग करने के बाद, हमें डेलोक पद्धति में एक [ExplorerAppDelegate release]
भी करना चाहिए , सही?
नहीं, यह बनाए रखने की संख्या में वृद्धि नहीं करता है।
उद्देश्य-सी में सम्मेलन यह है कि जो ऑब्जेक्ट आपको दिए गए हैं, उन्हें आपके द्वारा प्रबंधित मेमोरी होना चाहिए - लेकिन एप प्रतिनिधि की तरह साझा साझा संसाधन प्राप्त करने के मामले में, मेमोरी कहीं और निश्चित रूप से बनाए रखी जाती है (इस एप्लिकेशन डिलीट होने के साथ) आप पता है कि यह हमेशा "जीवित" होगा जब तक आपकी कक्षा नहीं होगी ... तो संदर्भ को बनाए रखने की कोई आवश्यकता नहीं है।
प्रतिनिधि का अधिक उपयोग में, एक प्रतिनिधि को लाने के बजाय आपको एक दिया जाता है , और यह संदर्भ या तो बनाए रखा नहीं है उस स्थिति में, जो भी आपको प्रतिनिधि देता है, प्रतिनिधि को रिलीज होने से पहले प्रतिनिधि लिंक को निकालने के लिए भी उत्तरदायी है।
आप आम तौर पर प्रतिनिधि संदर्भों को बनाए रखने के लिए नहीं चाहते हैं कि कारण यह किसी वस्तु को deallocated होने से रोका जा सकता है, उदाहरण के लिए यदि एक वर्ग एक वर्ग का एक प्रतिनिधि होता है जो एक प्रतिनिधि के रूप में दूसरे वर्ग का प्रतिनिधित्व करता है।
Comments
Post a Comment