2015-06-15 13 views
6

मैं एक ऐप डिज़ाइन कर रहा था जो NSURL सत्र का उपयोग करता है और इसे ग्रैंड सेंट्रल डिस्पैच के साथ एक अलग थ्रेड में डालने के बारे में सोच रहा है, लेकिन अगर NSRL सत्र स्वचालित रूप से पृष्ठभूमि में करता है, तो मुझे जीसीडी का उपयोग करना होगा, सही?क्या NSURL सत्र एक अलग धागे में होता है?

तो दूसरे शब्दों में, NSRL सत्र स्वचालित रूप से पृष्ठभूमि में ग्रैंड सेंट्रल डिस्पैच का उपयोग करता है, इसलिए हमें इसके बारे में चिंता करने की ज़रूरत नहीं है?

[[session dataTaskWithURL:[NSURL URLWithString:someURL] 
     completionHandler:^(NSData *data, 
          NSURLResponse *response, 
          NSError *error) { 
     // handle response 

    }] resume]; 

प्रलेखन से:: "यह पद्धति sendAsynchronousRequest के लिए एक विकल्प के रूप में करना है: जोड़ा कस्टम समर्थन करने की क्षमता के साथ, NSURLConnection की विधि: कतार: completionHandler

उत्तर

14

हाँ,

NSURLSession एक पृष्ठभूमि सूत्र में अपने काम करता है। डाउनलोड ALWAYS पृष्ठभूमि धागे पर होता है।

आप यह नियंत्रित कर सकते हैं कि इसकी पूर्णता विधियों को पृष्ठभूमि थ्रेड पर निष्पादित किया गया है या नहीं, जिसमें आपने प्रतिनिधि विधि में प्रतिनिधि क्यूयू पैरामीटर में पारित कतार द्वारा नहीं किया है। यदि आप शून्य में गुजरते हैं, तो यह एक (पृष्ठभूमि धागा) सीरियल ऑपरेशन कतार बनाता है जहां आपकी समापन विधियों को बुलाया जाता है। यदि आप NSOperationQueue.mainQueue() में पास करते हैं तो आपके समापन प्रतिनिधि विधियों को मुख्य थ्रेड पर बुलाया जाएगा और आपको मुख्य थ्रेड पर dispatch_async() कॉल में यूआई कॉल को लपेटना नहीं होगा।

3

यहाँ एक NSURLSession अनुरोध का एक उदाहरण है प्रमाणीकरण और रद्दीकरण। " संक्षिप्त उत्तर है: हाँ, NSURL सत्र पृष्ठभूमि संचालन करेगा। आपको अपने यूआई को अवरुद्ध करने के बारे में चिंता करने की ज़रूरत नहीं है।

+0

आपका उत्तर बहिष्कृत NSURLConnection के बारे में है। लेकिन सवाल NSURL सत्र के बारे में है। – Fogmeister

+0

NSURLSession – erparker

+0

पर मेरा उत्तर अपडेट किया गया पृष्ठभूमि संचालन एक अलग बात है। 'NSURLSession' हमेशा आपके डेटा को रिमोट डिवाइस से स्थानांतरित करने के लिए पृष्ठभूमि थ्रेड का उपयोग करता है। जब पृष्ठभूमि के बारे में 'NSURLSession' बात पर दस्तावेज़, वे आपके डाउनलोड/डेटा कार्य को जारी रखने के बारे में बात कर रहे हैं, भले ही आपका ऐप पृष्ठभूमि में, निलंबित, या यहां तक ​​कि समाप्त हो। –

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