【问题标题】:Swift Is UIImage Class InterningSwift 是 UIImage 类的实习生
【发布时间】:2016-03-13 08:33:05
【问题描述】:

应该是一个简单的答案,但我在任何地方都找不到。

假设我运行以下代码:

let imageView1 = UIImageView(image: UIImage(named: "image3"))
let imageView2 = UIImageView(image: UIImage(named: "image3"))

然后我运行这段代码:

var image = UIImage(named: "image3")
let imageView1 = UIImageView(image: image)
let imageView2 = UIImageView(image: image)
image = nil

两个选项会使用相同数量的内存,还是第二个选项会使用第一个选项的一半?

【问题讨论】:

    标签: ios swift uiimage


    【解决方案1】:

    第二种方法是首选,因为您只创建一次图像。 UIImage.init?(named name: String) 也使用缓存,因此您的图像不会在第一种方法中加载两次。你可以在这里阅读更多关于缓存的信息https://stackoverflow.com/a/8644628/4757335

    【讨论】:

      【解决方案2】:

      第一种方法基本上会调用alloc 两次,而第二种方法只会在图像上调用一次alloc。因此,第一种方法会占用更多的内存。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 1970-01-01
        • 2019-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多