Как сделать [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 увеличился значительно, но позже он оставался постоянным.