2016-03-13 93 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一次。因此,第一種方法會使用更多的內存。