Mam UITableView z komórkami niestandardowymi. Obrazy są asynchronicznie ładowane za pomocą Grand Central Dispatch. Wszystko działa dobrze, ale kiedy przewijam w dół, wcześniej załadowane obrazy są wyświetlane do momentu pobrania nowego obrazu. Oto mój kod:GCD UITableView obrazy obciążenia asynchronicznego, nieprawidłowe komórki są ładowane do momentu pobrania nowego obrazu
if (![[NSFileManager defaultManager] fileExistsAtPath:[path stringByAppendingPathComponent:@"image.png"]])
{
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *url=[pat stringByAppendingPathComponent:@"comments.txt"];
NSString *u=[NSString stringWithContentsOfFile:url encoding:NSUTF8StringEncoding error:nil];
NSURL *imageURL=[NSURL URLWithString:u];
NSData *image=[NSData dataWithContentsOfURL:imageURL];
[image writeToFile:[pat stringByAppendingPathComponent:@"image.png"] atomically:YES];
dispatch_sync(dispatch_get_main_queue(), ^{
cell.imageView.image=[UIImage imageWithContentsOfFile:[pat stringByAppendingPathComponent:@"image.png"]];
[cell setNeedsLayout];
NSLog(@"Download");
});
});
}
else
{
NSLog(@"cache");
cell.imageView.image=[UIImage imageWithContentsOfFile:[pat stringByAppendingPathComponent:@"image.png"]];
}
Wszelkie sugestie doceniane. P.S. Ponownie wykorzystuję komórki
dzięki za odpowiedź ... ale czy mógłbyś podać przykładowy kod? – blackhawk4152
Zaktualizowano moją odpowiedź – hypercrypt
dzięki, stary! Właśnie to, co chciałem – blackhawk4152