2010-07-29 15 views
8

मैं एक iPhone आवेदन में NSURLConnection उपयोग कर रहा हूँ और इंटरफ़ेस मेरी NSURLConnection उदाहरण के लिए initWithRequest: भेजने के बाद धीमा करने के लिए लगता है। मुझे यकीन है कि अगर यह हो रहा है क्योंकि मेरे प्रसंस्करण कोड एक लंबे समय प्रतिक्रिया को संभालने के लिए ले जा रहा है नहीं कर रहा हूँ, या अगर यह है, क्योंकि NSURLConnection मुख्य थ्रेड ब्लॉक कर रहा है।क्या NSURLConnection मुख्य थ्रेड को अवरुद्ध करता है?

किसी को भी इस बात की पुष्टि कर सकते हैं कि NSURLConnection कनेक्शन पैदा करेगा और एक अलग थ्रेड पर डेटा के लिए प्रतीक्षा करें, और तब मुख्य थ्रेड पर अपने प्रतिनिधि तरीकों कहते हैं?

धन्यवाद!

उत्तर

10

NSURLConnection आपरेशन के दो तरीके का समर्थन करता है। न तो अलग धागे का उपयोग करता है। वे दोनों केवल एक थ्रेड का उपयोग करते हैं, जो भी आप उन्हें थ्रेड करते हैं।

तुल्यकालिक मोड में, NSURLConnection आपके द्वारा चलाए जाने वाले थ्रेड को अवरुद्ध कर देगा। असिंक्रोनस मोड रन लूप का उपयोग करने के लिए (डेवलपर के परिप्रेक्ष्य से) व्यवहार करता है एक पृष्ठभूमि धागा लेकिन निचले ओवरहेड के साथ और बिना किसी थ्रेड-सुरक्षा मुद्दों के। यदि एसिंक्रोनस मोड का उपयोग करते हैं, तो आप इसे मुख्य थ्रेड में चलाना चाहते हैं। यह कुछ भी अवरुद्ध नहीं करेगा।

अपने इंटरफेस धीमा हो रहा है, तो उस NSURLConnection तुल्यकालिक का उपयोग कर, जब तक अनुरोध पूरा हो गया है जो बजाय अपने इंटरफेस पूरी तरह से बंद करने के लिए कारण होगा के अनुरूप नहीं है।

+5

आपको अंतिम वाक्य से सावधान रहना होगा! यदि आप उदाहरण के लिए 5000 छोटे अनुरोध है, उपयोगकर्ता अनुभव हो सकता है कि इंटरफ़ेस जो मैं हाल ही में – Tomen

+2

था का उपयोग करते हुए NSURLConnection अतुल्यकालिक रूप से एक धागा, एक आंतरिक एक बना है (थोड़ा बंद हो जाता है की एक बहुत कुछ की वजह से), धीमा हो रहा है। यह एसिंक्रोनस की परिभाषा है। – malhal

-1

यदि आप NSURLConnection पर सेब उदाहरण का पालन करते हैं तो कॉल को मुख्य थ्रेड की तुलना में एक अलग थ्रेड में संभाला जाएगा। अतुल्यकालिक और तुल्यकालिक:

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