Je lis à peu près NSURLSession
et je l'ai utilisé pour télécharger des images à partir d'une url.Here-à-dire la méthode que j'ai écrit:NSURLSession avec UICollectionView
-(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];
}
Maintenant, le problème est que j'appelle cette méthode à l'intérieur "cellForItemAtIndexPath:"
. Donc, au fil du temps je défile, cette méthode est appelée encore et encore pour chaque cellule (concept de réutilisation). Maintenant, comme le processus de téléchargement est asynchrone, je ne peux pas savoir quand le téléchargement est terminé.
Alors, que dois-je faire pour éviter ce problème? Je veux juste télécharger des images une fois.
Utiliser une option existante, comme SDWebImage – Wain
Comme je commence juste à connaître ces concepts, j'aimerais avoir une solution sans utiliser de classes tierces existantes. J'apprécierais une solution plus logique. – Reckoner
http://stackoverflow.com/questions/11511548/best-way-to-cache-images-on-ios-app référer ce lien. Il vous aidera. –