2016-09-28 42 views
0

我在創建和恢復URLSessionDataTaskURLSession時遇到問題,我期望後續調用會話(和任務)委託中的某些方法,但顯然不會發生此類調用。調試URLSession(在iOS 10中)

如何在這種情況下調試URLSession?例如,我可以請求它的日誌輸出找出它何時發送或接收HTTP流量,或者何時嘗試調用委託中的方法但找不到相關實現(例如,因爲實現中的方法簽名可能稍微關閉)。

回答

1

委託方法現在(開始)按預期調用。解決方案包括從URLSessionDataDelegateURLSessionTaskDelegate(非其文檔)的代碼庫複製方法簽名以確保完全匹配。查看設備日誌輸出(標有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?) { 
    // ... 
}