के अंदर मौजूद है, मुझे NSoperationQue से संबंधित समस्या का सामना करना पड़ रहा है। में मेरी कोड में:कॉलिंग - (शून्य) रद्द करें NSoperationQueue NSOperation की रद्द की गई संपत्ति को सेट नहीं कर रहा है जो कि कतार
-(void) viewDidLoad
{
//Initialisation of queue and operation.
//adding operation to queue
[self.operationQueue addOperation:op];
}
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.operationQueue cancelAllOperations];
}
तो मेरी NSOperation मुख्य कार्य के निष्पादन के दौरान जब मैं isCancelled संपत्ति के लिए जाँच कर रहा हूँ यह हमेशा नहीं देता है। NSOperationQueue पर cancellAllOperation कॉल करने के बाद वास्तव में। उदाहरण के लिए।
-(void)main
{
if(self.isCancelled)
{
// Never executing this block :-(
}
}
अधिक जानकारी के लिए मैं अपने NSOperation.And में कुछ नेटवर्क कॉल कर रहा हूँ जब मैं तो cancelAllOperation द्वारा अन्य दृश्य में स्विच करने के लिए बुलाया गया है। और जब मेरे एनएसओपरेशन में नेटवर्क प्रतिक्रिया वापस आई, तो मैं जांच रहा हूं कि (Self.isCancelled) और अब मैं एक और दृश्य में हूं (मतलब है कि रद्द किया गया है YES सेट करना चाहिए)। लेकिन यह जांच हमेशा विफल रहता है।
क्या आप सुनिश्चित हैं कि आपके ऑपरेशन को रद्द करने के समय से पहले ही ऑपरेशन शुरू नहीं हुआ हैऑपरऑपरेशंस? आपको अपने ऑपरेशन के निष्पादन में सेट की गई रद्द की गई संपत्ति की जांच करनी होगी। –
मैं लगातार अपने ऑपरेशन मुख्य विधि में रद्द की गई संपत्ति की जांच कर रहा हूं। मैं ब्रेकपॉइंट्स के माध्यम से डीबग करता हूं और पाया कि रद्द करने के बाद ऑलऑपरेशन विधि जब कॉल इस चेकपॉइंट पर वापस आती है, तो (self.isCancelled) हमेशा इसकी वापसी नहीं करता है। – kidsid49
क्या आप अपने एनएसओपरेशन पर 'रद्द करें' विधि को ओवरराइड कर रहे हैं? यदि हां, तो क्या आप इसे पोस्ट कर सकते हैं? यदि नहीं, तो क्या आप ओवरराइड कर सकते हैं, (सुपर कॉल करें) और इसे देखने के लिए लॉग या ब्रेकपॉइंट डालें? –