小编bla*_*152的帖子

GCD UITableView异步加载图像,加载错误的单元格直到新图像下载

我有一个带自定义单元格的UITableView.我使用Grand Central Dispatch异步加载图像.一切正常,但是当我向下滚动时,会显示先前加载的图像,直到下载新图像.这是我的代码:

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"]];
}
Run Code Online (Sandbox Code Playgroud)

任何建议赞赏.PS我重用了细胞

cocoa-touch objective-c uitableview ios

8
推荐指数
1
解决办法
9740
查看次数

标签 统计

cocoa-touch ×1

ios ×1

objective-c ×1

uitableview ×1