1

我有一个使用 UICollectionView 的照片浏览应用程序,我使用 Kingfisher 从 url 下载图像,如下所示:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    ...
                    cell.ivPhoto.kf.setImage

我使用 xCode Profile 工具进行了调试,发现当我滚动浏览集合视图时,内存由于这个对象而不断增长:ImageIO_jpeg_Data,它链接到 Kingfisher。有时当滚动浏览带有大图像(每张图像大约 500KB)的集合视图时,它非常滞后,内存可能会上升到 500+MB 并且应用程序崩溃,我在 lldb 中看到这是内存问题。我试图设置这个:

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    ImageCache.default.clearMemoryCache()
}

但它并没有解决崩溃问题。

4

1 回答 1

0

很老的问题,但它可以帮助别人。Kingfisher 默认具有无限的内存缓存限制。只需将其设置为您想要的值。

KingfisherManager.shared.cache.maxMemoryCost = 1000000

希望这可以帮助。

于 2018-06-07T09:11:14.060 回答