UITableViewCell загружает изображения и повторно используемые ячейки
мне нужно загрузить из веб / файлов некоторые UIImages. Я искал, и я нашел в другомвопрос этот код:
if (![[NSFileManager defaultManager] fileExistsAtPath:user.image]) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSData *imageData =[NSData dataWithContentsOfURL:[NSURL URLWithString:user.imageURL]];
[imageData writeToFile:user.image atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UIImage *image = [UIImage imageWithData:imageData];
[self.imageFriends setObject:image forKey:[NSNumber numberWithInt:user.userId]];
cell.imageView.image = image;
[cell setNeedsLayout];
NSLog(@"Download %@",user.image);
});
});
cell.imageView.image=[UIImage imageNamed:@"xger86x.jpg"];
} else {
NSLog(@"cache");
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
UIImage *image = [UIImage imageWithContentsOfFile:user.image];
//[self.imageFriends setObject:image forKey:[NSNumber numberWithInt:user.userId]];
dispatch_sync(dispatch_get_main_queue(), ^{
UITableViewCell *newCell = [tableView cellForRowAtIndexPath:indexPath];
newCell.imageView.image=image;
[newCell setNeedsLayout];
});
});
}
Но проблема в том, что при быстрой прокрутке вниз или вверх изображения загружаются неправильно, и когда заканчивается, происходит небольшая задержка.
Итак, вопрос заключается в следующем: как я могу загрузить UIImages в правильную ячейку, когда я использую очереди для их получения? Спасибо!