अद्यतन: उपकरण जब मैं ऐसा करता हूं तो लीक-ए-भरपूर दिखाता है। सावधानी के साथ आगे बढ़ें! मैं इसे यहां रख रहा हूं अगर मैं वास्तव में कुछ पर हूं और कोई और यह पता लगा सकता है कि रिसाव बाधा को कैसे प्राप्त किया जाए।
के लिए NSInvocationOperation के initWithTarget वस्तु के रूप में संचालन सेट: चयनकर्ता: वस्तु: विधि
यहाँ एक मुड़ विचार है, जो मैं कर रहा हूँ फिर से कोशिश कर रहा है के रूप में मैं इस टाइप है।
NSInvocationOperation *operation = [NSInvocationOperation alloc];
operation = [operation initWithTarget:self selector:@selector(myOperation:) object:operation];
[queue addOperation:operation];
[operation release];
नोट हम अपने स्वयं के कॉल में alloc अलग तोड़ने के लिए है: आप पहले से ही यह मानकर है एक NSOperationQueue (हम इसे कतार फोन करता हूँ)। अन्यथा हम ऑब्जेक्ट से ऑपरेशन सेट नहीं कर सकते हैं!
फिर, अपने ऑपरेशन विधि के भीतर, ऑब्जेक्ट को वापस डालें और के लिए चेक छिड़काव 0 वांछित वांछित के रूप में है। उदाहरण के लिए: ... कॉल के बाद आप एक वस्तु में पारित हो जाएगा अब:
- (void)myOperation:(id)object {
NSInvocationOperation *operation = (NSInvocationOperation *)object;
if ([operation isCancelled]) return;
...
}
सुनिश्चित करें कि आपके चयनकर्ता एक कॉलन initWithTarget में वापस के साथ समाप्त होता बनाओ।
अब तक तो अच्छा। अब अगर मैं रद्द कर सकता हूं सभीऑपरेशन, मुझे पता चलेगा कि यह वास्तव में काम करता है या नहीं। :)
स्रोत
2009-08-11 21:03:42
लेकिन अन्य उत्तरों को देखें, ऐसा लगता है कि आप ऐसा नहीं कर सकते हैं (कम से कम 'isCancelled' की जांच करने के मानक तरीके में) 'NSInvocationOperation' का उपयोग करते समय। – jrdioko