swift網絡請求未完成時,控制器已經銷毀

有時候我們在下拉加載或者上拉刷新的時候,退出了當前的控制器,所以導致請求完后的block訪問了野指針。
這個時候,我暫時想到了兩種方案解決:
第一種是ANF里面拿到請求的單例,然后獲取operationQueue執行取消操作。

NetworkTools.shareNetworkTools().operationQueue.cancelAllOperations()

第二種是記錄一個靜態的屬性
viewController.isDeinit = false
在控制器銷毀的時候將屬性改為true

deinit {
    ViewController.isDeinit = true
 }

然后在回調的時候,直接在請求里面攔截不執行block里面的內容
//偽代碼

NetworkManageTool.PostWithURL(Url, parameters:
        nil, success: { [unowned self](json) -> Void in
  if ViewController.isDeinit == true {
                return
  }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,259評論 1 23
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • AFHTTPRequestOperationManager 網絡傳輸協議UDP、TCP、Http、Socket、X...
    Carden閱讀 4,403評論 0 12
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,184評論 6 13