调试 URLSession(在 iOS 10 中)

Debugging URLSession (in iOS 10)

我在使用 URLSession 创建和恢复 URLSessionDataTask 时遇到了问题,因为我希望后续调用会话(和任务)委托中的某些方法,但显然没有发生这样的电话。

在这种情况下如何调试 URLSession?例如,我可以请求它的日志输出吗?找出它何时发送或接收 HTTP 流量,或何时它试图调用委托中的方法但找不到相关的实现(例如,因为实现中的方法签名可能略有偏差)。

现在(开始)按预期调用委托方法。解决方案包括从 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?) {
  // ...
}