Pobre UICollectionView Desplazamiento de rendimiento con UIImage

Tengo una UICollectionView en mi aplicación y cada celda es una UIImageView y algunas etiquetas de texto. El problema es que cuando tengo las UIImageViews mostrando sus imágenes, el rendimiento de desplazamiento es terrible. No es tan suave como la experiencia de desplazamiento de un UITableView o incluso del mismo UICollectionView sin el UIImageView.

encontréesta pregunta desde hace unos meses, y parece que se encontró una respuesta, pero está escrita en RubyMotion, y no lo entiendo. Intenté ver cómo convertirlo a Xcode, pero como tampoco he usado NSCache, es un poco difícil. El cartel allí también apuntaba aaquí acerca de implementar algo además de su solución, pero tampoco estoy seguro de dónde colocar ese código. Posiblemente porque no entiendo el código de laprimera pregunta.

¿Alguien podría ayudar a traducir esto a Xcode?

def viewDidLoad
  ...
  @images_cache = NSCache.alloc.init
  @image_loading_queue = NSOperationQueue.alloc.init
  @image_loading_queue.maxConcurrentOperationCount = 3
  ...
end

def collectionView(collection_view, cellForItemAtIndexPath: index_path)
  cell = collection_view.dequeueReusableCellWithReuseIdentifier(CELL_IDENTIFIER, forIndexPath: index_path)
  image_path = @image_paths[index_path.row]

  if cached_image = @images_cache.objectForKey(image_path)
    cell.image = cached_image
  else
    @operation = NSBlockOperation.blockOperationWithBlock lambda {
      @image = UIImage.imageWithContentsOfFile(image_path)
      Dispatch::Queue.main.async do
        return unless collectionView.indexPathsForVisibleItems.containsObject(index_path)
        @images_cache.setObject(@image, forKey: image_path)
        cell = collectionView.cellForItemAtIndexPath(index_path)
        cell.image = @image
      end
    }
    @image_loading_queue.addOperation(@operation)
  end
end

Aquí está el código de lasegunda pregunta que el que pregunta de laprimera pregunta Dicho resuelto el problema:

UIImage *productImage = [[UIImage alloc] initWithContentsOfFile:path];

CGSize imageSize = productImage.size;
UIGraphicsBeginImageContext(imageSize);
[productImage drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
productImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

Una vez más, no estoy seguro de cómo / dónde implementar eso.

Muchas gracias.