objectivec NSURLSessionDownloadTask
objectivec NSURLSessionDownloadTask
我在这里查看了这段代码,
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 通过只点击一次服务器来下载图像。
使用网络非常简单..
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];
I hope this code connects to the server two times, so the images are downloading slow.
您显示的代码没有连接到服务器并下载两次,但很容易看出为什么它看起来是这样做的。
因此,如果您正在寻找下载速度缓慢的原因,并认为这可能是由于双重下载造成的,那么事实并非如此。
如果您只是误解了代码,这里是其运作方式的概述:
- 该代码是一个下载任务。这样的任务会下载一个 URL 并将其内容存储到一个临时文件中。
- 下载任务完成后,它会调用其完成处理程序,将本地临时文件的URL传递给它(不是 原来的遥控器URL).
- 完成处理程序使用
dataWithContentsOfURL:
将本地文件的内容读入 NSData
对象。该方法也可用于读取远程文件 URL,这就是为什么快速查看可能会导致有人认为这是重复下载,但事实并非如此 - 它正在读取本地文件。
您可能会问为什么使用临时文件而不是将 URL 内容直接作为 NSData
对象传送?答案是可以使用 数据任务,您需要研究文档以了解下载任务与数据任务的优缺点。
有关更多详细信息,请阅读 Apple 的 NSURLSession Class Reference and URL Session Programming Guide。
HTH
我在这里查看了这段代码,
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 通过只点击一次服务器来下载图像。
使用网络非常简单..
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];
I hope this code connects to the server two times, so the images are downloading slow.
您显示的代码没有连接到服务器并下载两次,但很容易看出为什么它看起来是这样做的。
因此,如果您正在寻找下载速度缓慢的原因,并认为这可能是由于双重下载造成的,那么事实并非如此。
如果您只是误解了代码,这里是其运作方式的概述:
- 该代码是一个下载任务。这样的任务会下载一个 URL 并将其内容存储到一个临时文件中。
- 下载任务完成后,它会调用其完成处理程序,将本地临时文件的URL传递给它(不是 原来的遥控器URL).
- 完成处理程序使用
dataWithContentsOfURL:
将本地文件的内容读入NSData
对象。该方法也可用于读取远程文件 URL,这就是为什么快速查看可能会导致有人认为这是重复下载,但事实并非如此 - 它正在读取本地文件。
您可能会问为什么使用临时文件而不是将 URL 内容直接作为 NSData
对象传送?答案是可以使用 数据任务,您需要研究文档以了解下载任务与数据任务的优缺点。
有关更多详细信息,请阅读 Apple 的 NSURLSession Class Reference and URL Session Programming Guide。
HTH