對象創(chuàng)建
對象的創(chuàng)建會分配內(nèi)存俱尼、調(diào)整屬性薄榛,甚至還有讀取文件等操作,比較消耗CPU資源窘俺,盡量用輕量的對象代替重量的對象饲帅,可以對性能有所優(yōu)化。
- CALayer比UIView要輕量許多瘤泪,那么不需要響應(yīng)觸摸事件的控件灶泵,用CALayer顯示會更加合適。
- 如果對象不涉及UI操作对途,則盡量放到后臺線程去創(chuàng)建赦邻,但可惜的是包含有CALayer的控件,都只能在主線程創(chuàng)建和操作实檀。
- 通過Storyboard創(chuàng)建視圖對象時(shí)惶洲,其資源消耗會比直接通過代碼創(chuàng)建對象要大非常多,在性能敏感的界面里膳犹,Storyboard并不是一個(gè)好的技術(shù)選擇
- 盡量推遲對象創(chuàng)建的時(shí)間恬吕,并把對象的創(chuàng)建分散到多個(gè)任務(wù)中去。
- 如果對象可以復(fù)用须床,并且復(fù)用的代價(jià)比釋放铐料、創(chuàng)建新對象要小,那么這類對象應(yīng)當(dāng)盡量放到一個(gè)緩存池里復(fù)用豺旬。
對象調(diào)整
對象的調(diào)整也經(jīng)常是消耗CPU資源的地方余赢。
- 對UIView的屬性進(jìn)行調(diào)整時(shí),消耗的資源要遠(yuǎn)大于一般的屬性哈垢,所以在應(yīng)用中,應(yīng)該盡量避免減少不必要的屬性修改扛拨。
- 優(yōu)化性能時(shí)耘分,應(yīng)該盡量避免調(diào)整視圖層次、添加和移除視圖。
對象銷毀
對象的銷毀雖然消耗資源不多求泰,但累積起來也是不容忽視的央渣。通常當(dāng)容器類持有大量對象時(shí),其銷毀的資源消耗就非常明顯渴频。
- 如果對象可以放到后臺線程去釋放芽丹,那就挪到后臺線程去。
- 把對象捕獲到block中卜朗,然后扔到后臺隊(duì)列去隨便發(fā)送個(gè)消息以避免編譯器警告拔第,就可以讓對象在后臺線程銷毀了。
諸如:
NSArray *tmp = self.array;
self.array = nil;
dispatch_async(queue, ^{
[tmp class];
});```