2012-05-01 12 views
5

किसी ऑब्जेक्ट पॉइंटर को CGImageRef कास्टिंग करने के लिए कोई मेमोरी प्रबंधन जानकारी (__bridge आदि) की आवश्यकता क्यों नहीं है? उदाहरण के लिए, यदि छवि के प्रकार UIImage * है, और परत एक UIView के अंतर्निहित परत है, तो निम्न कोड पंक्ति संकलक से कोई शिकायत प्रकाश में लाना नहीं करता है:इस कलाकार को एआरसी के तहत कोई ब्रिजिंग क्यों नहीं है?

layer.content = (id)[image CGImage]; 

उत्तर

6

के शब्दों में Transitioning to ARC Release Notes:

संकलक हैंडल सीएफ कोको तरीके

संकलक ऑब्जेक्टिव-सी तरीकों कि कोर फाउंडेशनवापसी समझता है से लौटे वस्तुओंप्रकार ऐतिहासिक कोको नामकरण सम्मेलनों का पालन करते हैं (see Advanced Memory Management Programming Guide)। उदाहरण के लिए, कंपाइलर जानता है कि, आईओएस में, यूआईसीओलर की CGColor विधि द्वारा लौटाया गया CGColor स्वामित्व नहीं है। तुम अब भी इस उदाहरण से दिखाया गया है, एक उचित प्रकार डाली का उपयोग करना चाहिए ...

(ठीक है, नहीं काफी कोको स्पर्श, लेकिन हे!)।

क्योंकि CGImage कोरफॉउंडेशन ऑब्जेक्ट देता है, __bridge कास्ट आवश्यक नहीं है।

+1

एक बड़ी कंपनी ने मुझे एक बार अपने मोबाइल "कोको केवल" टीम में शामिल होने के लिए कहा ... ऐसा लगता है कि कोई भी वास्तव में 'कोको' और 'कोको-टच' मतभेदों की परवाह नहीं करता है और केवल कोको (यहां तक ​​कि ओबीजेसी) को भी कॉल करता है, यह एक शर्म की बात है हालांकि यह स्पष्ट रूप से ऐप्पल में भी होता है। – JustSid

+0

तो अगर मैं सही ढंग से समझता हूं, तो एआरसी को कोको विधि द्वारा लौटाए गए सिवाय इसके अलावा सीएफ ऑब्जेक्ट्स को संभाल नहीं पाता है? – Inept

+1

@ जस्टसिड * i * care =) – justin

संबंधित मुद्दे