【发布时间】:2016-01-25 21:55:09
【问题描述】:
我刚读到NSURLSession,我用它从一个url下载图像。这里就是我写的方法:
-(void)startDownloadingWithURLString:(NSString*)urlString andDisplayOn:(UIImageView*)imageView{
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration:configuration];
NSLog(@"%@",dataResponse);
NSURLSessionDownloadTask *task = [urlSession downloadTaskWithRequest:request completionHandler:^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) {
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
dispatch_async(dispatch_get_main_queue(), ^{
imageView.image = image;
});
}];
[task resume];
}
现在的问题是我在"cellForItemAtIndexPath:" 内部调用了这个方法。所以我滚动超时,这个方法被每个单元格一次又一次地调用(可重用性概念)。现在,由于下载过程是异步的,我可以'不知道什么时候下载完成。
那我应该怎么做才能避免这个问题呢?我只想下载一次图片。
【问题讨论】:
-
使用现有选项,例如 SDWebImage
-
由于我刚刚开始了解这些概念,我希望有一个不使用任何现有 3rd 方类的解决方案。我希望有一个更合乎逻辑的解决方案。
-
stackoverflow.com/questions/11511548/… 参考这个链接。它会帮助你。
-
感谢您的链接...
标签: ios uicollectionview nsurlsession