Как говорится в стеке, вы должны загружать изображения асинхронно, и есть замечательные категории, которые делают это очень легко сделать, а именно категорию в SDWebImage или в AFNetworking. Эти категории UIImageView
не только загружают изображения асинхронно, но также выполняют кэширование, при необходимости отменяют сетевые операции и т. Д. Для этого требуется много кода, если вы сделаете это правильно самостоятельно (захватив все те функции, которые я только что перечислил), но это очень легко, если вы используете одну из этих категорий.
Например, при использовании SDWebImage, вы можете:
#import "UIImageView+WebCache.h"
, а затем:
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType) {
if (error)
NSLog(@"%s: setImageWithURL error: %@", __FUNCTION__, error);
}];
Или, если используется AFNetworking:
#import "UIImageView+AFNetworking.h"
и
[cell.imageView setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
или
[cell.imageView setImageWithURLRequest:[NSURLRequest requestWithURL:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:nil failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"%s: setImageWithURLRequest error: %@", __FUNCTION__, error);
}];
Использование SDWebImage с заполнителем – stack