2012-06-24 17 views
6

मान लीजिए कि मैं कोड के इस टुकड़े करते हैं:क्या मुझे एआरसी के तहत CGColorSpaceRef जारी करने की आवश्यकता है?

CGColorSpaceRef colorSpaceRGB = CGColorSpaceCreateDeviceRGB(); 

CGContextSetStrokeColorSpace(context, colorSpaceRGB); 
CGContextSetFillColorSpace(context, colorSpaceRGB); 

उसके बाद मैं कुछ ड्राइंग है। जब मैं कर रहा हूं, क्या मैं एआरसी का उपयोग कर रहा हूं तो मुझे colorSpaceRGB मैन्युअल रूप से रिलीज़ करने की आवश्यकता है? इस तरह:

CGColorSpaceRelease(colorSpaceRGB); 

या मुझे कुछ भी करने की आवश्यकता नहीं है?

धन्यवाद :)

+0

इस उत्तर अच्छी तरह से बताता है कि क्यों और किसी भी वस्तु को रिहा करने की जरूरत है। कृपया जांचें: http://stackoverflow.com/a/21967681/2849443 –

उत्तर

10

हां। ऐप्पल के डॉक्टर के मुताबिक: क्योंकि CGColorSpaceRelease फ़ंक्शन CFRelease के समतुल्य है, सिवाय इसके कि सीएस पैरामीटर न्यूल होने पर यह त्रुटि उत्पन्न नहीं करता है। और यदि आप कोर फाउंडेशन ऑब्जेक्ट को बनाते हैं, प्रतिलिपि बनाते हैं या स्पष्ट रूप से बनाए रखते हैं, तो आपको इसे रिलीज़ करने के लिए ज़िम्मेदार है जब आपको इसकी आवश्यकता नहीं है (कोर फाउंडेशन के लिए मेमोरी मैनेजमेंट प्रोग्रामिंग गाइड देखें)। स्विफ्ट 4.0 के लिए

3

हाँ, मैं इतना विश्वास करते हैं, यहां तक ​​कि एआरसी के तहत।

प्रलेखन CGColorSpace Documentation के अनुसार आपको CGColorSpaceRelease पर कॉल करने की आवश्यकता है।

0

अद्यतन:

यह अब स्विफ्ट के वर्तमान संस्करण में की जरूरत है।

CGColorSpaceRelease(colorSpace) 

कोड की यह पंक्ति अब निम्न संदेश देता है:

'CGColorSpaceRelease' अनुपलब्ध है: कोर फाउंडेशन वस्तुओं स्वचालित रूप से कर रहे हैं स्मृति में कामयाब