2011-12-21 6 views
9

cancelAllOperations() मुख्य क्यूई पर काम नहीं करता है (cancel() विधि NSOperation ऑब्जेक्ट पर नहीं कहा जाता है)। क्या मैं कुछ भूल रहा हूँ? मैं सभी कार्यों के माध्यम से पुनरावृति और cancel() विधि कॉल यह काम पाने के लिए किया है।रद्द करेंऑपरऑपरेशंस [NSOperationQueue mainQueue]

+1

सुंदर यकीन है कि मैंने देखा है '-cancelAllOperations' काम ठीक। शायद आपको अधिक संदर्भ प्रदान करने की आवश्यकता है। –

+0

अभी जिस तरह का वर्णन किया, आज – Bryan

+0

में मेरे लिए असफल रहने मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन आप कहते हैं कि तुम 'NSURLConnection' के लिए' mainQueue' उपयोग कर रहे हैं। आप शायद 'NSURLConnection' आधारित संचालन के लिए एक कस्टम कतार उपयोग करना चाहते हैं, नहीं' mainQueue', वैसे भी (आप उपयोग कर सकते हैं 'संगामिति की डिग्री को नियंत्रित करते हुए maxConcurrentOperationCount' संगामिति आनंद लेने के लिए)। प्रतिनिधि आधारित 'NSURLConnection' का उपयोग कर रहे हैं, तो आप अभी भी मुख्य कतार पर कनेक्शन निर्धारित कर सकते हैं (या AFNetworking करता है, अपने स्वयं के runloop के साथ अपने स्वयं' NSThread' बनाएँ)। लेकिन आप शायद ऑपरेशन के लिए कस्टम कतार का उपयोग करना चाहते हैं। – Rob

उत्तर

5

मैं भी इस बात की पुष्टि कर सकते हैं कि cancelAllOperations पर [NSOperationQueue mainQueue] काम नहीं करता है (कम से कम मेरे पास iOS 5.0 सिम्युलेटर पर)। जानबूझकर इस तरह डिज़ाइन किया जा सकता है क्योंकि यह एक साझा उदाहरण है।

-(void)cancelMyOperationsInMainQueue {  
    for (NSOperation* o in [[NSOperationQueue mainQueue] operations]) { 
     if ([o isKindOfClass:[MyOperation class]]) { 
      [o cancel]; 
     } 
    } 
} 
0

हाँ भी यह पुष्टि कर सकते हैं कार्यों पर विधि रद्द फोन नहीं है, यह सिर्फ सेट isCancelled = YES:

मेरे सरल समाधान का कुछ भी अधिभावी बिना NSOperation या NSBlockOperation उपवर्ग के लिए और फिर कुछ इस तरह करते हैं

मेरे समाधान: [[[NSOperationQueue mainQueue] operations] makeObjectsPerformSelector:@selector(cancel)];