title: GCD UITableView asynchronous load images, wrong cells are loaded until new image download
body: <p>I have a UITableView with custom cells. I load images asynchronously using Grand Central Dispatch. Everything works fine, but when I scroll down, previously loaded images are shown till the new image is downloaded. Here is my code:</p>
  
  <pre><code>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"]];
  }
  </code></pre>
  
  <p>Any suggestions appreciated. 
  P.S. I reuse the cells</p>