【发布时间】:2020-12-03 14:38:51
【问题描述】:
我注意到收藏视图中的图像缓存占用了大量内存,需要了解如何释放它。我了解UIImage(named:) 和UIImage(contentsOfFile:) 之间的区别。但是,我使用的是UIImage(data:),我似乎找不到任何关于在这种情况下释放图像缓存的文档。任何帮助表示赞赏。这是我的代码 sn-p:
if let setImage = cell?.viewWithTag(101) as? UIImageView {
if let url = URL(string: imageURLs[indexPath.item]) {
let task = URLSession.shared.dataTask(with: url, completionHandler: { data, _, error in
guard let data = data, error == nil else {
print("No data detected: \(Error.self)")
return
}
DispatchQueue.main.async {
let newImageData = UIImage(data: data)
self.imageData[indexPath.item] = newImageData!
setImage.image = self.imageData[indexPath.item] as? UIImage
}
})
task.resume()
URLSession.shared.finishTasksAndInvalidate()
}
}
【问题讨论】:
-
您能告诉我们您是如何创建单元格的吗?你在使用
dequeueResusableCell方法吗? -
@TheAppMentor 是的。我正在使用 dequeueReusableCell 方法。我也在我的单元格上使用 prepareForReuse 方法。
-
@Rob 明白了。我把它留在那里是因为我只是想尝试一下,看看会发生什么。这对我正在处理的问题是多余的。
标签: ios swift memory-management uiimage image-caching