在 iOS 開發(fā)中, 我們?yōu)榱烁脩粢粋€(gè)很好的使用感受, 一般會(huì)盡可能的使 APP 的操作流程一些, 啟動(dòng)起訴快一些, 這也是 iPhone 中的應(yīng)用應(yīng)該具有的特征. 本文也是自己在平時(shí)開發(fā)過(guò)程中記錄的一些優(yōu)化記錄與心得
1. 盡可能不要阻塞主線程
我們知道, 在 iOS 中,UIKit 的操作一般都是在主線程中進(jìn)行的, 所以一旦一旦主線程被阻塞了, 響應(yīng)的 UI 可能就沒(méi)有辦法及時(shí)的刷新和響應(yīng)事件, 這就會(huì)給使用者一種很卡頓的現(xiàn)象. 一般這類阻塞主線程的操作有對(duì)數(shù)據(jù)庫(kù)的操作, 對(duì)文件的讀寫, 網(wǎng)絡(luò)獲取數(shù)據(jù)等, 所以我們盡可能的把這類操作放到子線程中去, 當(dāng)完成的時(shí)候再回到主線程刷新 UI 或者進(jìn)行相關(guān)操作, 以保證主線程不被阻塞, 給用戶一個(gè)良好的體驗(yàn).
2. 巧用 instruments
instruments 是在 iOS 開發(fā)中最 APP 性能監(jiān)測(cè)的一個(gè)利器, 在需要監(jiān)測(cè)性能的時(shí)候應(yīng)該優(yōu)先考慮使用它, 而不是去自己想象這問(wèn)題可能出在了哪里. 比如需要查看APP 中哪些部分最耗時(shí)的時(shí)候, 可以使用 Time Profiler 工具, 需要查看APP 內(nèi)存占用情況的時(shí)候, 可以使用 Leaks 工具. 關(guān)于 instruments 的更過(guò)相關(guān)知識(shí), 網(wǎng)上也有很多的資料.
3. 多使用 cache (緩存)
在開發(fā)中, 為了給用戶一個(gè)好的體驗(yàn), 一般都會(huì)使用緩存, 例如圖片數(shù)據(jù)能用 SDWebImage 這個(gè)第三方庫(kù)來(lái)進(jìn)行緩存. 基本思路是當(dāng) UI 需要顯示圖片的時(shí)候,首先去內(nèi)存中查看是否有緩存數(shù)據(jù), 如果有直接拿來(lái)用, 如果沒(méi)有, 再網(wǎng)絡(luò)獲取數(shù)據(jù), 并把最新的數(shù)據(jù)緩存在內(nèi)存中去, 方便下次使用.
4. 懶加載 view
在使用 UITableView 的時(shí)候, 盡可能的不要在 cell 上嵌套太多的 view, 這些會(huì)影響頁(yè)面滑動(dòng)的流暢度, 而且越多的 view 就會(huì)花費(fèi)越多的內(nèi)存. 如果有太多的 view, 影響了頁(yè)面滑動(dòng)的流暢度, 那么就可以考慮使用懶加載 view, 即不要一次性創(chuàng)建太多的 view, 有一些 view 到用的時(shí)候才去創(chuàng)建, 會(huì)更好
5. 盡可能的減少 APP 剛剛啟動(dòng)時(shí)的任務(wù)
在 APP 啟動(dòng)的時(shí)候, 應(yīng)該是盡可能快的把首頁(yè)展示給用戶, 以減少用戶的等待時(shí)間
今天寫記錄這么多, 下次繼續(xù)更新