2010-03-22 26 views
1

我正在創建一個涉及如此多Web服務調用的應用程序。我正在使用NSOperation來執行Web服務調用。應用程序中有幾個視圖,每次視圖加載時我都會調用Web服務。 由於是導航,所以即使在操作完成之前用戶決定返回到上一個視圖,另一個操作正在進入隊列,並且將等待前一個操作完成。當視圖改變時,有沒有辦法阻止以前的操作被執行?請幫助當查看更改時從隊列中刪除NSOperation

回答

1

您是否嘗試過這樣的事情在您的視圖控制器:

- (void)viewWillDisappear:(BOOL)animated { 
    [myOperation cancel]; 
    ... 
} 
+0

但我需要刪除隊列中的所有操作。我試過[opQueue cancellAllOperations];但仍然崩潰。我認爲目前正在執行的操作沒有被取消。 因此,我試圖waitUntilAllOperations,但它也花費時間.. – Nithin 2010-03-22 10:23:18

+0

@Nithin:取消操作只會停止其功能,如果操作檢查isCancelled keypath並根據該結果停止它正在做什麼。這聽起來像你的操作沒有對此作出響應,所以-waitUntilAllOperationsAreFinished被阻止,直到它們全部執行完畢。你也可以看看ASIHTTPRequest如何處理這個:http://allseeing-i.com/ASIHTTPRequest/ – 2010-03-22 15:17:17