我在创建和恢复URLSession
的URLSessionDataTask
上遇到了麻烦,因为我期望在会话(和任务的)委托中对某些方法的后续调用,但显然没有此类调用发生。
在这种情况下如何调试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?) {
// ...
}
关于ios - 调试URLSession(在iOS 10中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39757016/