2016-03-13 2 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. Поэтому первый метод будет использовать больший объем памяти.