1. 程式人生 > >談談iOS UIView 隱藏和建立的記憶體消

談談iOS UIView 隱藏和建立的記憶體消

專案中經常有很多的view需要建立和替換。而且view之間也是經常切換。那麼你是選擇把不用的view removeFromSuperView 還是選擇setHidden呢?

看程式碼


先建立5個UIview(ColorCubeView 只是繼承UIView的一個子類,沒有新增任何屬性和方法)。列印記憶體地址 ;

 再改變這5個View的顏色,依舊列印地址。

然後從父檢視中移除這5個View,還是列印地址。

可以看出上述三個步驟的5個View  每個View對應的地址是一樣的,也就是說地址沒變。

最後一步是重新搞回這5個View,相當於切換回來。一樣的tag,一樣的顏色。但是地址變了。說明這5個View用過別的記憶體。之前的記憶體就浪費在那邊,由ARC選個時間去回收。

可以想象如果一個app頻繁的建立和remove UIView,記憶體佔用是很大的或者記憶體重新整理很頻繁。如果選擇View設定為Hidden,則只是放在那邊佔用著,處理下didReceiveMemoryWarning;則會節省很多資源。雖然看起來後者很麻煩,但是優化的目的是減少運算,後者有絕對的優勢。

(自己試驗,僅供參考)