Ios URLSession完成处理程序应用程序崩溃

Ios URLSession完成处理程序应用程序崩溃,ios,swift,urlsession,Ios,Swift,Urlsession,我正在为URLSession使用swizzling方法,下面是我的swizzled方法。我不知道为什么在执行@escaping的完成处理程序时,应用程序在目标应用程序中崩溃。请帮我做这件事 @objc func mytestTaskWithRequest(request: URLRequest,completionHandler: @escaping (Data?, URLResponse?, Error?) -> Void ) -> URLSessionDataTask {

我正在为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,则您的应用程序将崩溃 试试这个:

@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)
      }