我在创建和恢复URLSessionURLSessionDataTask上遇到了麻烦,因为我期望在会话(和任务的)委托中对某些方法的后续调用,但显然没有此类调用发生。

在这种情况下如何调试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?) {
  // ...
}

关于ios - 调试URLSession(在iOS 10中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39757016/

10-10 20:57