最近空窗期,有了angularJS的基礎,學習了小程序沒那么費事,閑來把以前的一個項目做了下性能優化,以下是做的處理
- instruments
1、Time Profiler,查看程序哪些部分最耗時
2、Leaks,查看內存是否泄漏
3、Allocation,查看內存分配
4、Core Animation,打開Color Blended Layers,所有紅的都是降低fps的敵人,能改則改(opaque設置為YES,給個背景顏色)
- 不要阻塞主線程
請求數據等做耗時動作,放在子線程
cache
減少程序啟動過程中的任務
使用合適的數據結構
對數組、字典進行安全封裝
懶加載view
盡量把views設置為不透明,設置它們的opaque屬性為YES
優化Table View
1.正確使用reuseIdentifier來重用cells
2.盡量使所有的view opaque,包括cell自身
3.避免漸變,圖片縮放,后臺選人
4.緩存行高
5.如果cell內現實的內容來自web,使用異步加載,緩存請求結果
6.使用shadowPath來畫陰影
7.減少subviews的數量
8.盡量不使用cellForRowAtIndexPath,如果你需要用到它,只用一次然后緩存結果
9.使用正確的數據結構來存儲數據
10.使用rowHeight, sectionFooterHeight和 sectionHeaderHeight來設定固定的高,不要請求delegate
- 合理獲取圖片
1.imageNamed(會緩存),圖片反復重用
2.imageWithContentsOfFile,加載一個大圖片而且是一次性使用
- 緩存cell的layer,優化tableView性能
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
cell.layer.drawsAsynchronously = YES;