我作為面試官必問的补疑。怎么使之流暢歧沪,fps接近60幀。
第一癣丧,對象創(chuàng)建槽畔,對象銷毀,對象調(diào)整胁编。
對象創(chuàng)建會消耗內(nèi)存厢钧,cpu等鳞尔。所以純代碼優(yōu)勢于xib以及sb。
可以對象創(chuàng)建懶加載早直,這就是懶漢模式寥假,需要時候創(chuàng)建,不需要不創(chuàng)建霞扬,不頻繁創(chuàng)建糕韧。也是我必問的。
能緩存到緩存池的就放到緩存池喻圃。比如cell重用萤彩,就是一個緩存池,對數(shù)據(jù)的緩存斧拍,對cell高度的緩存雀扶。
第二,文本的計算繪制于渲染肆汹。
我在從后臺html轉(zhuǎn)成移動端原生東西就遇到這樣情況愚墓。把html轉(zhuǎn)換屬性字符串轉(zhuǎn)換放到后臺,并且緩存起來昂勉。
把常用控件屬性字符串展示都是在主線程浪册,所以盡量放到后臺異步繪制用textkit以及coretext,很多第三方這方面庫都是這樣岗照,不然cpu使用率會百分之九十九村象,哈哈是不是醉了。
第三谴返,圖像方面煞肾。UIImage的幾個方法不能馬上解碼,一般給到uiimageview等控件時候才會解碼嗓袱,這是在主線程做的籍救,所以要后臺異步繪制到CGBitmapContext 中,然后從 Bitmap 直接創(chuàng)建圖片渠抹。
第四蝙昙,視圖方面層次較多,以及透明圓角陰影遮照影響性能等梧却∑娴撸可以后臺異步繪制成一張圖片來解決,可以參考VVebo微博的思路放航,他的思路效果很不錯烈拒,很是流暢。 這里是例子,VVeboTableViewDemo荆几,當時運行跑了下吓妆,好流暢。
第五吨铸,預(yù)排版對視圖的frame bounds 等調(diào)整也比一般屬性消耗資源多行拢,所以盡量確定了,就不要頻繁變化诞吱。所以盡量后臺提前計算好布局舟奠,一次性調(diào)整好布局。