title: Asynchronous downloading of images for UITableView with GCD
body: <p>I'm downloading images for my uitableview asynchronously using GCD, but there is a problem - when scrolling images flicker and change all the time. I tried setting image to nil with every  cell, but it doesn't help much.
  When scrolling back up fast, all images are wrong. What can I do about that?
  Here is my method for cells:</p>
  
  <pre><code>- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      static NSString *CellIdentifier = @"Cell";
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
  
      if (self.loader.parsedData[indexPath.row] != nil)
      {
          cell.imageView.image = nil;
          dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
              dispatch_async(queue, ^(void) {
  
                  NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[self.loader.parsedData[indexPath.row] objectForKey:@"imageLR"]]];
  
                  UIImage* image = [[UIImage alloc] initWithData:imageData];
  
                  dispatch_async(dispatch_get_main_queue(), ^{
                      cell.imageView.image = image;
                      [cell setNeedsLayout];
                       });
              });
  
      cell.textLabel.text = [self.loader.parsedData[indexPath.row] objectForKey:@"id"];
      }
      return cell;
  }
  </code></pre>