自動布局
Auto Layout 在 iOS 12 中優(yōu)化后的性能贱田,已經(jīng)基本和手寫布局一樣可以達(dá)到性能隨著視圖嵌套的數(shù)量呈線性增長 了。而在此之前的 Auto Layout馅巷,視圖嵌套的數(shù)量對性能的影響是呈指數(shù)級增長的泳唠。
為什么 iOS 12 以前性能不好呢醒陆? 原因是:iOS 12以前宅广,當(dāng)有約束變化時都會重新創(chuàng)建一個計算引擎 NSISEngier 將約束關(guān)系重新加起來,重新計算些举。涉及到約束關(guān)系變多時跟狱,新的計算引擎需要重新計算,最終導(dǎo)致計算量指數(shù)級增加户魏!
Cassoway 算法本身沒有問題驶臊,問題是iOS 12之前在某些情況下沒有用好這個算法。
iOS 12 以后的 AutoLayout 更多的利用了 Cassoway 算法的界面更新策略叼丑,使其真正完成了高效的界面線性策略計算关翎,使其和手寫布局有了幾乎相同的高性能!
避免過于龐大的XIB
XIB是推出比較早的繪圖工具鸠信,后面在iOS5的時候推出了StoryBoard來取代XIB的地位纵寝。不過到目前它們兩個是共存的狀態(tài),原因是它們的適用場景不同星立。
- XIB使用子View控件的定制爽茴,偏小型。但是在使用時會將整個XiB都加載到內(nèi)存绰垂,如果XIB過大的話室奏,會導(dǎo)致內(nèi)存浪費(fèi)。
- StoryBoard是偏重宏觀的劲装,一般做控制器跳轉(zhuǎn)胧沫,可以定義整個控制器視圖。在使用時占业,StoryBoard是用到哪個控制器加載哪個绒怨,不會將所有的都加載。