我在这里查看了这段代码,
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通过只打一次服务器来下载图像。
答案 0 :(得分:0)
使用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];
答案 1 :(得分:0)
我希望此代码连接到服务器两次,因此图像下载速度很慢。
您显示的代码不连接到服务器并下载两次,但很容易看出为什么会这样做。
因此,如果您正在寻找下载速度慢的原因并认为可能是因为双重下载,那么事实并非如此。
如果您误解了代码,请在此处概述其运作方式:
NSData
将本地文件的内容读入dataWithContentsOfURL:
对象。该方法也可用于读取远程URL,这就是为什么快速查看可能会导致有人认为这是重复下载,但事实并非如此 - 它正在读取本地文件。您可能会问为什么使用临时文件而不是直接作为NSData
对象传递的URL内容?答案是,可以使用数据任务,您需要研究下载与数据任务的专业文档。
有关详细信息,请阅读Apple的NSURLSession Class Reference和URL Session Programming Guide。
HTH