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?) {
// ...
}