अगर मैं iOS 5 में अपग्रेड करने का निर्णय लेता हूं, तो क्या मुझे अपने कोड से सभी [myObject रिटेन] और [myObject रिलीज़] स्टेटमेंट निकालने की आवश्यकता है?
हां, लेकिन XCode 4.2 में एक नया "माइग्रेट टू ऑब्जेक्टिव-सी एआरसी" टूल (एडिट-> रिफ्लेक्टर मेनू) शामिल है, जो आपके लिए ऐसा करता है। डीललोक बुलाना एक अलग कहानी है। जैसा कि टिप्पणियों में उल्लेख किया गया है कि क्लैंग संदर्भ में कहा गया है कि आपको अपना डीललोक तरीका रखना चाहिए:
औचित्य: भले ही एआरसी उदाहरण चर को स्वचालित रूप से नष्ट कर देता है, लेकिन अभी भी एक वैध तरीके को लिखने के लिए वैध कारण हैं, जैसे गैर-अनुरक्षित संसाधनों को मुक्त करना। ऐसी विधि में [सुपर डीलॉक] बुलाने में विफल होना लगभग हमेशा एक बग है।
आप ARC को नए -fobjc- आर्क कंपाइलर ध्वज का उपयोग करने में सक्षम करते हैं। ARC को Mac OS X v10.6 और v10.7 (64-बिट एप्लिकेशन) और iOS 4 और iOS 5. के लिए Xcode 4.2 में समर्थित किया गया है (Mac OS X v10.6 और iOS 4 में कमजोर संदर्भों का समर्थन नहीं किया गया है)। Xcode 4.1 में ARC सपोर्ट नहीं है।
-
अगर मैं ARC का उपयोग करके iOS 5 के लिए एक नया ऐप विकसित करता हूं, तो क्या मुझे कुछ प्रकार के "रेट्रो-कम्पैटिबिलिटी" चेक लागू करने की आवश्यकता होगी? Ie: क्या मुझे iOS के संस्करण की जांच करने और तदनुसार कॉल रिटेन करने और रिलीज़ करने की आवश्यकता होगी? तो, मूल रूप से, एआरसी सभी iOS संस्करणों के लिए या सिर्फ iOS 5 के लिए उपलब्ध है?
नहीं, क्योंकि एआरसी संकलन के समय पर अपना जादू चलाती है न कि रन टाइम पर।
इसके बजाय आपको याद रखना है कि रिटेन, रिलीज़ और ऑटोरेलिज़ का उपयोग कब करना है, एआरसी आपकी वस्तुओं की जीवनकाल की आवश्यकताओं का मूल्यांकन करता है और संकलन समय पर आपके लिए उपयुक्त विधि कॉल को स्वचालित रूप से सम्मिलित करता है। संकलक भी आपके लिए उपयुक्त डीलॉक तरीके उत्पन्न करता है।
ARC पर अधिक जानकारी: http://clang.llvm.org/docs/AutomaticReferenceCounting.html