एआरसी के साथ, मैं अब डाल सकता CGColorRefकरने के लिए id। मुझे पता चला कि मुझे एक कास्ट करने की जरूरत है। क्लैग डॉक्स के अनुसार :
एक पाटने डाली एक सी शैली डाली तीन किसी कीवर्ड के साथ टिप्पणी की जाती है:
(__bridge T) opगंतव्य प्रकार के लिए ऑपरेंड को निकालता हैT। यदिTएक प्राप्य ऑब्जेक्ट पॉइंटर प्रकार है, तोopएक गैर-प्राप्य पॉइंटर प्रकार होना चाहिए। यदिTएक गैर-पुन: प्रयोज्य सूचक प्रकार है, तो op में एक प्राप्य वस्तु सूचक प्रकार होना चाहिए। अन्यथा कलाकार बीमार है। स्वामित्व का कोई हस्तांतरण नहीं है, और एआरसी कोई भी संचालन नहीं करता है।
(__bridge_retained T) opगंतव्य को टाइप करने के लिए ऑपरेंड को कास्टेबल होना चाहिए, जिसके पास नॉन-रिटेंबल पॉइंटर टाइप होना चाहिए। एआरसी मूल्य को बरकरार रखता है, स्थानीय मूल्यों पर सामान्य अनुकूलन के अधीन है, और प्राप्तकर्ता उस +1 को संतुलित करने के लिए जिम्मेदार है।
(__bridge_transfer T) opगंतव्य को टाइप करने के लिए ऑपरेंड को कास्ट किया जाना चाहिए, जिसके पास नॉन-मेंटेबल पॉइंटर टाइप होना चाहिए, जो एक रिसेटेबल ऑब्जेक्ट पॉइंटर टाइप होना चाहिए। एआरसी स्थानीय मूल्यों पर सामान्य अनुकूलन के अधीन, पूर्ण अभिव्यक्ति के अंत में मूल्य जारी करेगा।एआरसी नियंत्रण में और बाहर वस्तुओं को स्थानांतरित करने के लिए इन जातियों की आवश्यकता होती है; अनुरक्षण योग्य वस्तु बिंदुओं के रूपांतरण पर अनुभाग में औचित्य देखें।
एक का उपयोग करना
__bridge_retainedया__bridge_transferएआरसी को समझाने के लिए फेंकना एक असंतुलित बनाए रखने या रिलीज के साथ किरदारों विशुद्ध रूप से क्रमश: खराब फार्म है।
मैं किस तरह की स्थितियों में प्रत्येक का उपयोग करूंगा?
उदाहरण के लिए, CAGradientLayerएक colorsसंपत्ति है जो CGColorRefएस की एक सरणी को स्वीकार करती है । मेरा अनुमान है कि मुझे __brigeयहाँ का उपयोग करना चाहिए , लेकिन वास्तव में मुझे क्यों (या नहीं करना चाहिए) स्पष्ट नहीं है।