对于创建和恢复URLSessionDataTask的URLSessionDataTask,我遇到了麻烦,因为我期望会话的(和任务的)委托中的某些方法随后调用,但显然没有发生这样的调用。
在这种情况下,我如何调试URLSession?例如,我是否可以请求它的日志输出,例如,查找它何时发送或接收HTTP通信量,或者当它试图在委托中调用一个方法时,但却找不到相关的实现(例如,因为实现中的方法签名可能稍微关闭)。
发布于 2016-09-29 02:34:18
现在(开始)按预期调用委托方法。解决方案包括从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?) {
// ...
} https://stackoverflow.com/questions/39757016
复制相似问题