2009-10-11 10 views
7

NSUrlConnection ऑब्जेक्ट को जारी करने के लिए सही बिंदु क्या है?NSUrlConnection ऑब्जेक्ट को कब जारी करें

मेरे कार्यक्रम में, मैं एक NSUrlConnection आवंटित करता हूं, और फिर initWithRequest को अतुल्यकालिक रूप से लात मारने के लिए अनुमति देता है।

अब मैं ऑब्जेक्ट जारी करने के लिए ज़िम्मेदार हूं - मैं कब/रिलीज़ कर सकता हूं? तत्काल अगर मैं इसे फिर से उपयोग नहीं कर रहा हूं?

+0

मैंने अपना NSUrlConnection बनाने के बाद retaincount की जांच की - यह 2. मुझे लगता है कि तुरंत रिलीज़ करना सही है। कोई भी इस पर विरोधाभास करना चाहता है, या ऐसा उत्तर बना सकता है जो यह कहता है? – Alan

उत्तर

7

NSUrlConnection का आपका उपयोग तुरंत जारी किया जा सकता है।

फ्रेमवर्क इसे समाप्त होने पर रिलीज़ होगा।

+1

मुझे लगता है कि यह एक अच्छा विचार नहीं है। मैंने अपने कोड के साथ जांच की, और फिर यह एक दुर्घटना हो रही है। और सेब नमूना कोड ने इसे जारी नहीं किया था। वे इसे प्रतिनिधि कॉल में छोड़ देते हैं उदा। didFinishLoading ... – karim

10

जब आप NSURLConnection के साथ किए जाते हैं। आपको पता चलेगा कि आप इसके साथ कर चुके हैं जब आपके NSURLConnection प्रतिनिधि को - (void)connectionDidFinishLoading:(NSURLConnection *)connection या - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error प्राप्त होता है। बस उन दो तरीकों के अंत में इसे छोड़ दें।

+0

यह मेरे एप्लिकेशन को BAD_ACCESS के साथ क्रैश करने का कारण बनता है। मेरा मानना ​​है कि आप इसे तुरंत छोड़ सकते हैं क्योंकि @ एलन कहते हैं। – Nathan

1

आपको इसे तब तक रिलीज़ करने की आवश्यकता नहीं है जब तक कि फ्रेमवर्क आपको एक अधिसूचना जारी न करे, यह कहता है कि यह connection:didFailWithError: है।

1

यह थोड़ा देर हो चुकी है (आपका प्रश्न 200 9 में एक साल पहले पोस्ट किया गया था) लेकिन मुझे अपने NSUrlConnection कोड के साथ कुछ परेशानी हो रही थी। NSUrlConnection क्रैश हो रहा था और मैंने सोचा था कि क्रैश NSUrlConnection [theConnection release]; की मेरी रिलीज से संबंधित था। मैं ऐप्पल के उदाहरण here में अपना कोड लिख रहा था, लेकिन जब मैं ऐप्पल didFailWithError और connectionDidFinishLoading दोनों में करता हूं और यह ठीक काम करता है, तो इसे रिलीज़ करने के बजाय "लिस्टिंग 1" में बनाया गया था, इसके बाद मैं कनेक्शन जारी कर रहा था। मुझे पूरी तरह से यकीन नहीं है, लेकिन हो सकता है कि उन दोनों प्रतिनिधियों को बुलाया जा रहा था और दुर्घटना का कारण बनने वाली एक डबल रिलीज थी। मुझे यकीन नहीं था कि जब तक मैं इस प्रश्न को पढ़ नहीं लेता तब तक मैं अपने NSUrlConnection ऑब्जेक्ट को तब तक रिलीज़ कर सकता था जब तक कि मैं यह प्रश्न नहीं पढ़ता था।

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