APP的內存優化和性能優化
先把項目上線調試出現bug搞一下.沒仔細看
內存優化
- Assets.xcassets的使用和優缺點
- 視圖資源管理工具,啟動圖標和appIcon需要使用png格式,其他圖片可以使用其他格式的圖片,導出不要后綴,但是其他路徑下其他格式格式圖片需要后綴.并且使用的圖片不會被直接釋放掉,而是緩存起來.使用
- PDF和1x,2x,3x有什么區別??PDF為矢量圖,可以無損放大.(為深入研究矢量圖)
app的瘦身主要不就是針對app的.ipa安裝包優化.
分析下安裝包的目錄
資源層面:
1. assets.car:項目.xcassets壓縮包
2. image:圖片資源文件
3. video和audio
代碼層面:
1. Xib && SB:編譯后的文件
2. Yep:項目的可執行文件
3. .framework:庫
所以能夠從資源層面或者代碼層面入手.
資源層面:可以分為Local和Remote.
優化1:按需家在資源,做好緩存策略后,把非必須的資源文件都放在服務器上面.但是啟動圖片和應用圖片變是必須文件當然還有其他的一些.
優化2:因為現在基本不用適配1x圖片的屏幕,可以刪除,采取拖得方式,圖片只包含2x,3x.能夠減少%35圖片資源消耗.但是耗費的性能(CPU),不建議使用..
怎么減少性能消耗.iOS9.0引出App Slicing:App Store會根據不同的設備準備不同的安裝包.每個安裝包只有響應尺寸的圖片(如iPhone6s只會去下載2x圖片到安裝包),但是這個功能的前提是需要.xcassets去管理.
優化3:HTML5基本使用WKWebView來實現,也是可以優化的.
* 1. 讓前端給最小的包,內置到app.
* 2. 所有的圖片,所有的頁面Remote化.
優化4:資源文件重復問題,圖片名字相同通過.xcassets
可以去重.可以使用LSUnusedResources
將代碼中沒有用到的文件刪除.
啟動圖:使用launchScreen.sb就不用這么多張圖了.弄一張pdf啟動圖就可以了.
- 去重復資源,不用資源.
- 使用.xcassets管理.使用pdf高于png.
- 非資源文件放在Remote上
- HTML5,Remote化.
- 去除無用代碼.
性能優化
- 使用系統自帶的instrments工具,作用:可以分析程序每個階段的性能,找出耗時過多的地方進行檢查優化.
- 不要再主線程上進行耗時操作,盡量在子線程上操作.
- 使用NSCache:線程安全,收到內存警告時,會自動刪減緩存.
- 懶加載,用的時候才加載,減少內存消耗.
- 滑動的性能優化.
- 首先滑動會將runLoop模式改為UITrackingRunLoopMode,所以定時器需要改變運行循環的模式.不然無法滾動
- cell內盡量少的去創建View
- 繪制圖片再異步進行等操作在異步進行,主線程更新.
- 少cornerRadius,shadows.修改陰影和圓角需要額外開辟一塊緩存區進行渲染.消耗CUP和內存
- alphe,涉及圖層操作,也會增大計算量
- lable陰影效果通過貝塞爾曲線繪制,能夠提高效率.
圖形內存原理
圖形內存原理
7. 最好UI繪制四周透明圖片.或異步繪制.