[英]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.