2

我有一个问题,我正在创建 UIImageAsset 对象来存储从 API 下载的多种尺寸的图像,但分配给 UIImageAssets 的内存不再释放。

在我的测试中,这只发生在下载的 UIImages中,而不是使用 UIImage(named:) 初始化程序的 xcassets 目录中的那些。

在此示例中,我只是使用来自互联网的随机猫图像,但这也可以解决问题。

func createImageAsset() {
        var scale = 1
        var asset = UIImageAsset()
        
        for _ in 0...5 {
            var data = Data()
            do {
                try data = Data(contentsOf: URL(string: "https://i.pinimg.com/originals/21/94/3b/21943bb9849d304ef77850a9df2d3020.png")!)
            } catch {
                print(error.localizedDescription)
            }
            
            asset.register(UIImage(data: data)!, with: UITraitCollection(displayScale: CGFloat(scale)))
            scale += 1
        }
}

为了弄清楚我为什么使用 UIImageAsset:我正在尝试复制 xcassets 目录的行为,以让 UIImageView 从此资产中获取适当大小的图像。其他解决方案的建议表示赞赏,但我主要寻找此内存问题的解决方案/解释。

4

0 回答 0