NSURLSession委托和completionHandler

Yed*_*edy 6 objective-c ios

我正在使用NSURLSession + NSURLDownloadTask和completionHandler:

[session downloadTaskWithURL:downloadURL completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error)
Run Code Online (Sandbox Code Playgroud)

它很好用.

但是当我想在progressBar中跟踪下载时,我遇到了问题.我正在尝试使用NSURLSessionDownloadDelegate来跟踪加载.上面的completionHandler它永远不会被调用?!

使用:

 NSURLSessionDownloadTask *downloadTask =
[session downloadTaskWithURL:downloadURL];
Run Code Online (Sandbox Code Playgroud)

会打电话给代表们.

有没有办法使用completionHandler和委托?
或者在使用completionHandler时跟踪下载的任何其他方式?

Rob*_*Rob 2

要使用didWriteData的方法NSURLSessionDownloadDelegate,遗憾的是您必须使用downloadTaskWithURL不带的再现completionHandler,然后实现您自己的URLSession:downloadTask:didFinishDownloadingToURL:来执行您本来会在完成处理程序中执行的操作。

这有点烦人(特别是因为它NSURLSessionDownloadDelegate是在会话对象上设置的),但这就是它的工作原理。