2012-09-27 11 views
5

को रद्द करना मैं सभी अनुरोधों को रद्द करना चाहता हूं। सभी अनुरोधों को रद्द करने के लिएअसिंक्रोनस NSURLConnection और NSOperation -

-(void)cancelAllRequests 
{ 
    NSLog(@"%@",self.queue.operations); 
    [self.queue cancelAllOperations]; 
    [self.queue waitUntilAllOperationsAreFinished]; 
} 

:

[NSURLConnection sendAsynchronousRequest:echo queue:self.queue completionHandler:^(NSURLResponse *respone, NSData *data, NSError *error){ 

मैं तो इस विधि का उपयोग: यहाँ कैसे मैं अतुल्यकालिक कनेक्शन बना रहा हूं है।

जो वास्तव में वाईईएस को बदलने के अलावा कुछ भी नहीं करता है।

तो मुझे एक एसिंक्रोनस कनेक्शन कैसे रद्द करना है?

उत्तर

5

आप sendAsynchronousRequest का उपयोग कर निर्धारित कनेक्शन रद्द कर सकते हैं। जिस कतार का आप उल्लेख कर रहे हैं वह केवल पूरा करने वाले हैंडर को शेड्यूल करने के लिए उपयोग किया जाता है।

यदि आप NSURLConnection पर पूर्ण नियंत्रण चाहते हैं, तो आपको NSURLConnectionDelegate स्वयं को लागू करना होगा। एक उदाहरण कार्यान्वयन https://gist.github.com/3794804

+0

मैं इसे कुछ मिनटों में एक गिस्ट साझा करूंगा। – leo

1

पर आप क्या कर सकते हैं एक ऑपरेशन (एक ब्लॉक का उपयोग करके) में सिंक्रोनस अनुरोध डाल सकते हैं।

एनएसओपेरेशनक्यूयू अधिकतम संख्याऑफकॉनकंटेंटऑपरेशन 1 को सेट करें (इसलिए वे एक समय में एक चलाते हैं)।

फिर यदि आप रद्द करते हैं तो कतार पर सभीऑपरेशन यह किसी भी ऑपरेशन को रोक देगा जो अभी तक नहीं चला है।