簡體   English   中英

放棄iOS應用中的網絡請求

[英]Abandoning network requests in iOS apps

將myViewController推入導航堆棧后,我向網絡發出了一些簡單的請求,這些數據填充了myViewController上的幾個字段。 我不希望此請求阻塞主線程,所以我使用performSelectorInBackground使其成功。 當請求返回時,我使用performSelectorOnMainThread更新UI。

除了放棄請求外,此方法效果很好。 假設用戶按下視圖控制器,網絡請求開始,然后用戶立即彈出視圖控制器並在應用程序中執行其他操作。 在這種情況下,網絡請求將返回到不存在的對象。 我該如何處理?

我考慮過一個更強大的網絡層,其中每個請求都有一個委托來處理響應。 使用這種架構,當彈出視圖控制器時,我可以取消委托,從而避免了請求不返回任何內容的問題。 我不確定這是否是最好的方法。

我不希望該請求阻塞主線程,所以我使用performSelectorInBackground使其成功。

因此,您正在發出一個同步請求-一個將阻塞正在運行的線程的請求。 而不是這樣做,例如,使用+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]使請求異步。 然后,您可以從任意線程(包括主線程)發出請求-無需-performSelectorInBackground: 當連接更改狀態時,將使用NSURLConnectionDelegate協議通知您的代表。 這樣,您可以向連接發送-cancel消息以停止連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM