首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objectivec NSURLSessionDownloadTask

objectivec NSURLSessionDownloadTask
EN

Stack Overflow用户
提问于 2016-05-19 14:07:14
回答 2查看 1.6K关注 0票数 1

我在这里看过这个代码,

https://www.raywenderlich.com/67081/cookbook-using-nsurlsession

代码语言:javascript
复制
NSURLSessionDownloadTask *downloadPhotoTask = [[NSURLSession sharedSession]
downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {
UIImage *downloadedImage = [UIImage imageWithData:
[NSData dataWithContentsOfURL:location]];
}];

我希望这段代码两次连接到服务器,所以图像加载速度很慢。我只想知道如何通过只点击服务器一次就可以使用NSURLSessionDownloadTask下载图像。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-19 18:05:56

我希望这段代码两次连接到服务器,所以图像下载速度很慢。

您显示的代码会让而不是连接到服务器并下载两次,不过很容易看出为什么会这样做。

因此,如果您正在寻找一个原因,为什么您的下载速度慢,并认为它可能是由于双重下载,那么它不是。

如果您刚才误解了代码,那么这里的代码概述了它的操作方式:

  • 代码是一个下载任务。这样的任务下载URL并将其内容存储到临时文件中。
  • 下载任务完成后,它调用其完成处理程序,将本地临时文件的URL传递给它(,而不是,原始远程URL)。
  • 完成处理程序使用NSData将本地文件的内容读入dataWithContentsOfURL:对象。该方法也可用于读取远程URL,这就是为什么快速查看可能会导致有人认为这是下载的重复,但事实并非如此--它正在读取本地文件。

您可能会问,为什么使用临时文件而不是直接作为NSData对象传递的URL内容?答案是,可以使用数据任务,您需要研究下载的利弊和数据任务的文档。

欲了解更多细节,请阅读苹果的NSURLSession类引用URL会话编程指南

HTH

票数 1
EN

Stack Overflow用户

发布于 2016-05-19 14:38:40

它非常简单的使用afnetworking ..

代码语言:javascript
复制
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response: %@", responseObject);
    _imageView.image = responseObject;

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Image error: %@", error);
}];
[requestOperation start];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37325738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档