我有一个问题,我正在创建 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 从此资产中获取适当大小的图像。其他解决方案的建议表示赞赏,但我主要寻找此内存问题的解决方案/解释。