IOS性能優(yōu)化,卡頓分析

總結自YYKit作者的文章ios保持界面流暢的技巧

CPU資源消耗原因及解決方案

1,對象創(chuàng)建

對象的創(chuàng)建會分配內(nèi)存,調整屬性,甚至還有讀取文件等操作,都比較消耗CPU資源。
建議:1,盡量用輕量的對象代替重量的對象:
eg:CALayer 比 UIView要輕量許多,如果不需要響應觸摸事件的控件,用CALayer顯示會
        更加合適;
         通過Storyboard創(chuàng)建視圖對象時,其資源消耗會比直接通過代碼創(chuàng)建對象要大得多;
            2,盡量推遲對象創(chuàng)建的時間,并把對象的創(chuàng)建分散到多個任務中;
            3,如果可以復用,就盡可能的從緩存池中復用對象;

2,對象調整

對象的調整也是耗費CPU資源的地方,
eg:CALayer并沒有屬性,當給屬性賦值時,內(nèi)部是通過運行時resolveInstanceMethod為對象
        臨時添加一個方法,并把對應的屬性值存儲在一個dictionary中,同時還會通知delegate,創(chuàng)
        建動畫等等,非常消耗資源;UIView的相關屬性(frame等)都是layer映射過來的;
建議:在性能優(yōu)化時,盡可能的減少對象屬性的更改,視圖層級調整,添加和移除視圖;

3,對象銷毀

通常當容器內(nèi)持有大量對象時,銷毀時資源的消耗也是非常明顯的;
小Tip:把對象放到Block中,然后扔到后臺隊列去隨便發(fā)送個消息以避免編譯器警告,就可以讓對象在
后臺線程銷毀了。

NSArray *tmp = self.array;
self.array = nil;
dispatch_async(queue, ^{
      [tmp class];
}
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容