एआरसी द्वारा शुरू की गई संपत्तियों के लिए दो नए मेमोरी प्रबंधन गुण हैं, strong
और weak
।
इसके अलावा copy
, जो स्पष्ट रूप से कुछ पूरी तरह से अलग है, क्या strong
बनाम retain
और weak
बनाम के बीच कोई अंतर हैं assign
?
मेरी समझ से, यहां एकमात्र अंतर यह है कि पॉइंटर weak
को असाइन nil
किया जाएगा , जबकि assign
ऐसा नहीं होगा, जिसका अर्थ है कि प्रोग्राम क्रैश हो जाएगा जब मैं एक संदेश जारी करने के बाद पॉइंटर को भेजता हूं। लेकिन अगर मैं उपयोग करता हूं weak
, तो ऐसा कभी नहीं होगा, क्योंकि संदेश भेजने से nil
कुछ नहीं होगा।
मैं किसी भी अंतर के बारे में नहीं जानता strong
और retain
।
क्या कोई कारण है कि मुझे assign
और retain
नई परियोजनाओं में उपयोग करना चाहिए , या जिस तरह से पदावनत किया जा रहा है?
weak
और strong
) और 4 चर जीवन क्वालिफायर ( __strong
, __weak
, __unsafe_unretained
, __autoreleasing
)। नीचे एआरसी नोट्स देखें।
assign
ARC के साथ संकलन करते समय एक त्रुटि हुई थी। इस बारे में कई हटाए गए उत्तर हैं। ऐसा लगता है कि अंतिम रिलीज़ से पहले इसे बदल दिया गया था। unsafe_unretained
हममें से बहुत से शुरुआती लोगों के लिए पसंदीदा विशेषता है। प्रमाण के लिए जो कि unsafe_unretained
एक मान्य विशेषता है, ऐप्पल के "प्रोग्रामिंग विथ ऑब्जेक्टिव-सी" को सेक्शन "एनकैप्सुलेटिंग डेटा" के तहत सबहडिंग के तहत "कुछ वर्गों के लिए असुरक्षित असुरक्षित संदर्भ का उपयोग करें"। जो कहता है: "एक संपत्ति के लिए, इसका मतलब असुरक्षित_सुविधा प्राप्त विशेषता का उपयोग कर रहा है:"
strong
,weak
औरunsafe_unretained
।