AlamofireImage 没有释放内存
Posted
技术标签:
【中文标题】AlamofireImage 没有释放内存【英文标题】:AlamofireImage is not deallacating the memory 【发布时间】:2017-09-29 11:59:39 【问题描述】:我正在将图像从AlamofireImage 设置为UITableViewCell
,扩展名为af_setImageWithURL
,当我滚动它太快时内存大小增加并且它不会减少但是我停止滚动。
我在UITableViewCell
类中使用:
imgProduct.image = UIImage()
clearImageFromCache(imageURL)
let filter = AspectScaledToFillSizeFilter(size: imgProduct.frame.size)
imgProduct.af_setImageWithURL(imageURL, placeholderImage: UIImage(),filter: filter)
我也尝试过NSURLCache.sharedURLCache().removeAllCachedResponses()
,但没有成功。
func clearImageFromCache(URL:NSURL)
let URLRequest = NSURLRequest(URL: URL)
let imageDownloader = UIImageView.af_sharedImageDownloader
// Clear the URLRequest from the in-memory cache
imageDownloader.imageCache?.removeImageForRequest(URLRequest, withAdditionalIdentifier: nil)
// Clear the URLRequest from the on-disk cache
imageDownloader.sessionManager.session.configuration.URLCache?.removeCachedResponseForRequest(URLRequest)
内存调试截图如下:
之前:
滚动后:
注意:- 当我在没有图像的情况下滚动时效果很好。
【问题讨论】:
你在模拟器上运行吗? - 检查使用Debug -> Simulate Memory Warning
时会发生什么
@WarrenBurton 我正在使用 iPhone 6 和 iPad mini 4!但是好的,让我检查一下!
使用内存调试器。它应该告诉你为什么你的图片没有被丢弃。
【参考方案1】:
尝试释放图像
imgProduct.image = nil
【讨论】:
@SalmanGhumsani 然后在设置图像 imgProduct.image = nil 之前尝试这样做 @SalmanGhumsani 为什么需要这条线? imgProduct.image = UIImage() @SalmanGhumsani 您的内存泄漏,因为您在单元格内调用此方法,您可以创建函数和共享实例,并在该共享对象中调用此函数。这样你就可以重用它,而不是每次都调用 new 我必须使用 shared 调用哪种方法? 好的,让我检查一下!!以上是关于AlamofireImage 没有释放内存的主要内容,如果未能解决你的问题,请参考以下文章