Низкая производительность прокрутки UICollectionView с UIImage

У меня есть UICollectionView в моем приложении, и каждая ячейка представляет собой UIImageView и некоторые текстовые метки. Проблема в том, что когда у меня UIImageViews отображают свои изображения, производительность прокрутки ужасна. Это далеко не так гладко, как при прокрутке UITableView или даже того же UICollectionView без UIImageView.

я нашелэтот вопрос несколько месяцев назад, и кажется, что ответ был найден, но он написан на RubyMotion, и я этого не понимаю. Я пытался понять, как преобразовать его в Xcode, но так как я никогда не использовал NSCache, это немного сложно. Плакат там также указал наВот о реализации чего-то в дополнение к их решению, но я не уверен, куда же поместить этот код. Возможно, потому что я не понимаю код изПервый вопрос.

Кто-нибудь сможет помочь перевести это в 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

Вот код извторой вопрос что спрашивающийПервый вопрос сказал, решил проблему

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

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

Опять же, я не уверен, как / где это реализовать.

Большое спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос