6

में मजबूत बनाम बनाए रखें मुझे पता है कि 'मजबूत' बनाम 'कमजोर' पर कई लेखन अप हैं। लेकिन सभी दस्तावेज़ कहते हैं कि दोनों एक दूसरे के लिए 100% समानार्थी हैं और आप 'बनाए रखने' की जगह 'मजबूत' का उपयोग कर सकते हैं, और इसके विपरीत।एआरसी

मेरा प्रश्न है: यदि वे समान हैं, तो ऐप्पल ने नया 'मजबूत' कीवर्ड क्यों पेश किया? मैंने नमूना प्रोजेक्ट में दोनों का परीक्षण किया है, और 'मजबूत' और 'बनाए रखने' गुण गुण दोनों एक ही काम करने लगते हैं। क्या आपको नहीं लगता कि अगर ऐप्पल ने 'मजबूत' विशेषता पेश की है, तो इसे 'बनाए रखने' विशेषता के उपयोग को अस्वीकार कर देना चाहिए? या क्या मैं कुछ न कुछ भूल रहा हूं?

+1

http://stackoverflow.com/questions/8927727/objective-c-arc-strong-vs-retain-and-weak-vs-assign –

+1

'strong' और 'retain' काफी समान हैं, लेकिन क्योंकि एआरसी में आपको _retaining-releaseasing_ ऑब्जेक्ट्स के बारे में चिंता करने की आवश्यकता नहीं है, 'मजबूत' एआरसी में संपत्ति के लिए तर्कसंगत रूप से अधिक उचित है ... जैसे एमआरआर में 'रखरखाव' के विपरीत 'रिलीज' या ' ऑटोरेलीज ', एआरसी पर्यावरण में' मजबूत 'का कोई विपरीत विपरीत नहीं है, यही कारण है कि एआरसी में' बनाए रखने 'के बजाय' मजबूत 'का उपयोग करने के लिए तर्कसंगत रूप से अधिक सही है; अगर यह आपको समझ में आता है। – holex

+0

@ काटोच मैंने पढ़ा है कि यह एक ही चीज को इंगित करता है = मैं समझता हूं कि मैं समझता हूं। लेकिन सवाल यह है कि डेवलपर के दिमाग में संदेह क्यों पैदा करना है (हालांकि मैं हमेशा मजबूत उपयोग करता हूं) क्योंकि मैन्युअल मेमोरी मैनेजमेंट से संबंधित कुछ था, उन्हें एआरसी परियोजनाओं में बनाए रखने के इस्तेमाल को पूरी तरह बंद कर देना चाहिए था, फिर भी एआरसी में इसकी जगह क्यों है ? – IOSCODER

उत्तर

9

retain प्री-एआरसी दिनों से बचा हुआ है जहां आप retain count ऑब्जेक्ट्स को बढ़ा/घटाएंगे, इस पर निर्भर करता है कि आप इसे स्मृति में चारों ओर लटका चाहते हैं या नहीं।

स्पष्ट रूप से एआरसी के साथ आपको अब इसके बारे में चिंता करने की ज़रूरत नहीं है और मुझे संदेह है कि retain को अधिक अनुभवी उद्देश्य-सी प्रोग्रामर के लिए उपयोग में आसानी के लिए आसानी से छोड़ा जा सकता है।

आर्क के साथ सबसे अधिक प्रचलित कीवर्ड हैं: (strong, weak, nonatomic, readonly, copy)

+0

हाँ आखिर में मुझे लगता है कि हम यह स्पष्टीकरण दे सकते हैं। – IOSCODER