0
我在創建和恢復URLSessionDataTask
的URLSession
時遇到問題,我期望後續調用會話(和任務)委託中的某些方法,但顯然不會發生此類調用。調試URLSession(在iOS 10中)
如何在這種情況下調試URLSession
?例如,我可以請求它的日誌輸出找出它何時發送或接收HTTP流量,或者何時嘗試調用委託中的方法但找不到相關實現(例如,因爲實現中的方法簽名可能稍微關閉)。
我在創建和恢復URLSessionDataTask
的URLSession
時遇到問題,我期望後續調用會話(和任務)委託中的某些方法,但顯然不會發生此類調用。調試URLSession(在iOS 10中)
如何在這種情況下調試URLSession
?例如,我可以請求它的日誌輸出找出它何時發送或接收HTTP流量,或者何時嘗試調用委託中的方法但找不到相關實現(例如,因爲實現中的方法簽名可能稍微關閉)。
委託方法現在(開始)按預期調用。解決方案包括從URLSessionDataDelegate
和URLSessionTaskDelegate
(非其文檔)的代碼庫複製方法簽名以確保完全匹配。查看設備日誌輸出(標有libsystem_network.dylib
和<Debug>
的行)也很有幫助。現採用的方法簽名如下:
public func urlSession(_ session: URLSession,
task: URLSessionTask,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Swift.Void) {
// ...
}
public func urlSession(_ session: URLSession,
dataTask: URLSessionDataTask,
didReceive data: Data) {
// ...
}
public func urlSession(_ session: URLSession,
task: URLSessionTask,
didCompleteWithError error: Error?) {
// ...
}