`URLSessionDelegate` 方法未被调用
`URLSessionDelegate` methods are not called
请注意,我已经检查了以前的答案并且我没有在代码中使用回调。在这种情况下,应该调用 delegate
方法
环境iOS14.4.2
URL 有效。文件已下载。只是代表没有被调用。
示例代码如下:
final class Downloader: NSObject, URLSessionDelegate {
private lazy var urlSession = URLSession(
configuration: .default,
delegate: self,
delegateQueue: .main
)
private var downloadTask: URLSessionDownloadTask?
func beginDownload(url: URL) {
downloadTask = urlSession.downloadTask(with: url)
downloadTask!.resume()
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
// NEVER CALLED
}
}
您正在实施的 func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)
方法是 URLSessionDownloadDelegate
的一部分,而不是 URLSessionDelegate
,因此您也应该声明符合 URLSessionDownloadDelegate
以便委托呼叫发生。
请注意,我已经检查了以前的答案并且我没有在代码中使用回调。在这种情况下,应该调用 delegate
方法
环境iOS14.4.2
URL 有效。文件已下载。只是代表没有被调用。
示例代码如下:
final class Downloader: NSObject, URLSessionDelegate {
private lazy var urlSession = URLSession(
configuration: .default,
delegate: self,
delegateQueue: .main
)
private var downloadTask: URLSessionDownloadTask?
func beginDownload(url: URL) {
downloadTask = urlSession.downloadTask(with: url)
downloadTask!.resume()
}
func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL) {
// NEVER CALLED
}
}
您正在实施的 func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)
方法是 URLSessionDownloadDelegate
的一部分,而不是 URLSessionDelegate
,因此您也应该声明符合 URLSessionDownloadDelegate
以便委托呼叫发生。