2016-09-28 72 views
0

我在创建和恢复URLSessionDataTaskURLSession时遇到问题,我期望后续调用会话(和任务)委托中的某些方法,但显然不会发生此类调用。调试URLSession(在iOS 10中)

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

回答

1

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