我在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()
}
}
每个条目使用kingfisher
添加一个加载了UIImageView
的UITableViewCell
loadRemoteImage(placeImage, argURL: _images[indexPath.row], cr : 0)
现在我的问题是,如何确保使用的ram不会继续增加?
我正在调试工具中的内存,它增加了10兆字节,大约3页加载,这太多了,而且它开始超过200兆字节,所以有什么诀窍可以避免这种情况公羊开放增加?我害怕用户多次滚动和繁荣,应用程序崩溃。
答案 0 :(得分:3)
我说要优化你的图像。根据你所说的,你使用非常大的图像。请记住,它们是在UITableViewCell中显示的,因此压缩它们应该是安全的。
尝试抓取并显示缩略图而不是实际的全尺寸图像。这样也可以改善用户体验,减少延迟,减少内存使用量!
答案 1 :(得分:1)
您可以将处理器添加到imgage请求并缩小图像。这将使您的图像保持较小。试试这个:
let processor = ResizingImageProcessor(targetSize: CGSize(width: 100, height: 100))
imageView.kf.setImage(with: url, options: [.processor(processor)])
答案 2 :(得分:1)
我使用SDWebImage
用于相同的目的,并且它有相同的非常简单的方法。此外,它为您提供了强制要加载图像或使用缓存图像(如果存在)的选项。
我也尝试查找相同的内存,在SDWebImage
的情况下,对于前4-5张图像,ram增加很多,但后来保持不变。
答案 3 :(得分:1)
您可以使用AsyncDisplayKit并自动受益于智能预加载和内存管理。特别是,如果ASTableNode
的单元格包含图像,但该单元格为not likely to be visible soon,则图像将从内存中清除。