Как сделать [load on scroll], чтобы не добавлять изображения в ram?

Я делаю несколько load on scroll в своем UITableView для извлечения данных с сервера.

func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath)
{
    let lastElement = self._titles_en.count - 1
    if indexPath.row == lastElement
    {
        page += 1
        searchForString()
    }
}

каждая запись добавляет UITableViewCell с UIImageView, загруженным с помощью kingfisher

loadRemoteImage(placeImage, argURL: _images[indexPath.row], cr : 0)

Теперь мой вопрос: как я могу следить за тем, чтобы используемый плунжер не увеличивался?

Я смотрел баран в инструментах отладки, он увеличился на 10 мегабайт при загрузке примерно на 3 страницы, что слишком много, и оно начинает превышать 200 мегабайт, так что есть ли уловка, чтобы избежать этого всплеска? Я боюсь, что пользователь будет прокручивать много раз и бум, авария приложения.

Ответ 1

Вы можете использовать AsyncDisplayKit и автоматически использовать интеллектуальную предварительную загрузку и управление памятью. В частности, если ячейка ASTableNode содержит изображение, но эта ячейка скоро не будет видима, тогда изображение будет очищается из памяти.

пример: example

Ответ 2

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

Попробуйте выбрать и отобразить миниатюры вместо фактических полноразмерных изображений. Это также улучшит работу с пользователем, уменьшит отставание, использование вашей памяти!

Ответ 3

Вы можете добавить процессор к запросам на размещение и сжать изображения. Это уменьшит ваши изображения. Попробуйте следующее:

let processor = ResizingImageProcessor(targetSize: CGSize(width: 100, height: 100))
imageView.kf.setImage(with: url, options: [.processor(processor)])

Ответ 4

Я использую SDWebImage для этой же цели, и у него есть очень простые методы для того же самого. Кроме того, он предоставляет вам возможность, которая решительно хочет загрузить изображение или использовать кешированные изображения, если существует.

Я также попытался найти память для того же самого, в моем случае с SDWebImage, для первых 4-5 изображений, ram увеличился значительно, но позже он оставался постоянным.