【问题标题】:objectivec NSURLSessionDownloadTask目标c NSURLSessionDownloadTask
【发布时间】:2016-05-19 14:07:14
【问题描述】:

我在这里查看了这段代码,

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

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

我希望这段代码连接到服务器两次,所以图像加载缓慢。我只想知道如何使用 NSURLSessionDownloadTask 通过只访问服务器一次来下载图像。

【问题讨论】:

  • 该代码不会连接到服务器两次。

标签: ios objective-c nsurlsessiondownloadtask


【解决方案1】:

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

您显示的代码确实连接到服务器并下载了两次,但很容易看出为什么会这样做。

因此,如果您正在寻找下载缓慢的原因并认为这可能是由于重复下载造成的,那么事实并非如此。

如果您只是误解了这里的代码,这里是其运作方式的概述:

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

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

如需了解更多详情,请阅读 Apple 的 NSURLSession Class ReferenceURL Session Programming Guide

HTH

【讨论】:

    【解决方案2】:

    它非常简单的使用afnetworking ..

    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];
    

    【讨论】:

    • 谢谢 vaibhav,我是 iOS 新手,我想知道是否可以在不使用 AFNetworking 的情况下做到这一点
    • @Sujananth 在编程方面你不能这么死板,这是我使用 afnetworking 的个人经验,它比其他更快,没有任何混淆.. 你还想要为了解决您的问题,我强烈建议您在实施任何代码之前阅读 ..
    猜你喜欢
    • 2016-11-24
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多