title: Table View Scrolling Async
body: <p>I am loading an image to a table view cell, each cell has an image.  I've adapter a couple tutorials to the code below, but I am still having slow down.</p>
  
  <p>I am loading these images from the documents directory.  Any tips or ideas on how to speed this process up?</p>
  
  <p>Edit Revised Code:</p>
  
  <pre><code>Beer *beer = (Beer *) [self.fetchedResultsController objectAtIndexPath:indexPath];
  cell.displayBeerName.text = beer.name;
  
  // did we already cache a copy of the image?
  if (beer.image != nil) {
      // good.  use it.  this will run quick and this will run most of the time
      cell.beerImage.image = beer.image;
  } else {
      // it must be the first time we've scrolled by this beer.  do the expensive
      // image init off the main thread
  
      cell.beerImage.image  = nil;   // set a default value here.  nil is good enough for now
  
      [self loadImageForBeer:beer atIndexPath:indexPath];
  }
  - (void)loadImageForBeer:(Beer *)beer atIndexPath:(NSIndexPath *)indexPath {
  
      dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
      dispatch_async(queue, ^{
  
          UIImage *image = [UIImage imageWithContentsOfFile:beer.imagePath];
          beer.image = image;
  
          dispatch_sync(dispatch_get_main_queue(), ^{
              UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
              cell.beerImage.image = image;
          });
      });
  }
  </code></pre>