2012-11-02 55 views
1

我正在製作一個應用程序,它爲數據選取器異步裝載數據,然後重新裝入數據選取器,並且一切正常。提前終止異步NSURLConnection

的問題是,如果用戶點擊文本字段,該應用程序,使得對信息網絡的要求,但如果沒有加載,然後用戶點擊返回按鈕,然後在視圖中消失,但數據仍在後臺加載。

我試過在自定義線程上運行此加載方法,然後在viewWillDisappear上調用[myThread cancel];,但數據仍然加載。我希望避免用戶在他不想再加載時使用數據。任何幫助?

我想殺死com.apple.nsurlconnectionloader,但我不知道該怎麼做。

回答

0

這裏很少有注意事項,取消NSThread不會立即終止它,它只會標記爲終止。

我會做的,而不是爲NSOperation內實現你NSURLConnection代表,當你想取消下載您可以在操作中,將其isCanceled屬性設置爲YES打電話cancel。然後,您可以將其用作標誌來終止操作的runloop,並且下載不會繼續。

蘋果在這裏使用NSOperation的技術很好https://developer.apple.com/library/ios/#technotes/tn2109/_index.html

+0

哦,我明白了。感謝您的回覆。 我手邊有一個更大的問題,看到我有大約8個不同的ViewController,它們使用一個類,我稱之爲ServerInterface.h和.m,連接到服務器。例如myArray = [ServerInterface getAppointmentsForUser:1];但由於NSURLConnection實現是異步的,所以我需要在每個類中實現委託方法,而不是調用ServerInterface,對吧?希望我清楚......:s – acib708

+0

不是真的,你可以在你的NSOperation子類中使用ServerInterface,並使該操作成爲NSURLConnection的委託。基本上,你只需要在一個地方實現NSURLConnection委託:在你的NSOperation子類中。查看Apple NSOperation教程的答案中的URL – yfrancis