簡體   English   中英

URLSession完成處理程序應用崩潰

[英]URLSession completion handler app crashes

我正在對URLSession使用swizzling方法,下面是我的swizzled方法。 我不確定為什么在執行@escaping的完成處理程序時應用程序在目標應用程序中崩潰。 請幫助我。

@objc func mytestTaskWithRequest(request: URLRequest,completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void ) -> URLSessionDataTask {
    let completionHandler: (Data?, URLResponse?, Error?) -> Void = {(data, response, error) in
      if error == nil {
        DispatchQueue.main.async {
          self.captureNetworkInfo(senderRequest: request, senderResponse: response!)
        }
      }
      completionHandler(data,response,nil)
    }
    return mytestTaskWithRequest(request: request,completionHandler: completionHandler)
  }

您的響應是基於null安全性,因此您可以使用!強制它,如果響應返回null,則您的應用程序將崩潰請嘗試以下操作:

@objc func mytestTaskWithRequest(request: URLRequest,completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void ) -> URLSessionDataTask {
        let completionHandler: (Data?, URLResponse?, Error?) -> Void = {(data, response, error) in
          if error == nil {
            DispatchQueue.main.async {
              if let tempResponse = response {
               self.captureNetworkInfo(senderRequest: request, senderResponse: tempResponse)
              }
            }
          }
          completionHandler(data,response,nil)
        }
        return mytestTaskWithRequest(request: request,completionHandler: completionHandler)
      }

暫無
暫無

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

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