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