gpt4 book ai didi

ios - 使用相同的默认 UIImage 对象进行单元重用/初始化

转载 作者:行者123 更新时间:2023-11-28 10:05:46 25 4
gpt4 key购买 nike

我对在 tableView 委托(delegate)方法 _cellForRowAtIndexPath_ 中的单元格配置期间使用存储在 Assests.xcassets 中的默认 UIImage 存有疑问。考虑以下代码片段:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier:newItemCellResueId , for: indexPath) as? MyCustomCell
cell?.imageView?.image = defaultImage
//After this we do all other stuff that needs to be done with the cell
return cell
}

其中 defaultImage 是我的类的存储属性,它是这样初始化的:-

var defaultImage = UIImage(named: "Default") 

现在我的问题是这个。由于 image 是单元格 imageView 的 subview ,当我将单元格的 imageView.image 设置为等于我存储的属性的实例时,我假设它将添加为该单元格的 imageView 的 subview 。如果是这样,如何将单个默认 UIImage 实例作为 subview 添加到多个单元格?如果不是,它是否生成此 UIImage 的不同实例并将它们添加到单元格中?如果是,为什么我们不担心所有 defaultImage 实例的内存占用(缓存等)(就像我们为 TableViewController 异步获取图像所做的那样)

最佳答案

UIImage 不是 UIView 的子类,也不会添加为您的 UIImageView 的 subview 。 UIImageView 是一个可以呈现UIImageUIView

由于 UIImage 是一个不可变对象(immutable对象),多个 UIImageViews 可以安全地引用同一个 UIImage

UIImage(named:) 初始化器使用内部内存缓存,因此无论您使用默认图像的单个属性,还是使用 UIImage(named:) initialiser repeatedly 对你的应用程序的内存占用没有影响。

关于ios - 使用相同的默认 UIImage 对象进行单元重用/初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53968763/

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