2016-03-13 57 views
0

应该是一个简单的答案,但我无法在任何地方找到它。Swift is UIImage Class Interning

假设我运行下面的代码:

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 

都将选择使用相同的内存量,或将第二个选项使用一半第一个呢?

回答

2

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

0

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