gpt4 book ai didi

swift - 从 Firebase 下载的图像在大小仅为 200-400kb 时不知何故占用了 28mb 内存

转载 作者:行者123 更新时间:2023-11-30 12:36:06 24 4
gpt4 key购买 nike

我正在使用 Firebase 来托管和下载我的应用的图像。 Firebase 上的每个图像的大小范围为 200kb-400kb,用户在滚动浏览 collectionView 时一次下载大约 12 个图像。当我启动下载图像的 VC 时,我的应用程序总共下载了 19 张图像,从使用大约 100mb 内存到 650mb 内存。有问题的图像是 JPEG,并且在上传到 Firebase 之前已被严重压缩。这些图像存储在 NSCache 中,清除缓存会使内存使用量回落到 100mb 左右。

这是怎么回事?这是一些可能有帮助的代码?:

类 TripOverviewCell:UICollectionViewCell {

@IBOutlet weak var imageView: UIImageView!

func updateUI(photo:Photo, image:UIImage? = nil) {
//Call when preparing to show image
if image != nil {
print("Loaded from cache")
imageView.image = image
photo.assignImage(image: image!)
} else {
let url = photo.imageUrl
let ref = FIRStorage.storage().reference(forURL: url)
ref.data(withMaxSize: 5*1024*1024, completion: { [weak self] (data, error) in
if error != nil {
print("Unable to download image")
} else {
print("Image downloaded")
if let imageData = data {
if let image = UIImage(data: imageData) {
self?.imageView.image = image
photo.assignImage(image: image)
TripsVC.imageCache.setObject(image, forKey: photo.uid as NSString)
}
}
}
})
}
}
}

最佳答案

正如弗兰克评论的那样,显示的图像占用的空间比图像数据要多得多。我的错误在于我正在缓存 UIImages,这是完整显示的图像。相反,我应该缓存数据,然后根据需要的数据创建图像。内存使用量从 550mb 下降到约 20mb。

关于swift - 从 Firebase 下载的图像在大小仅为 200-400kb 时不知何故占用了 28mb 内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42864348/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com