1. 程式人生 > >iOS總結-Runtime篇之用途及面試題的總結一

iOS總結-Runtime篇之用途及面試題的總結一

runtime的用途基本分下面幾類:

實現多繼承Multiple Inheritance

上一篇裡面的最後利用methodSignatureForSelector來進行一次轉發,在forwardInvocation方法裡,Person將是send的方法轉移到可以實現send方法的gender物件,其實還是gender來實現的。類似於多繼承,好像看著是Person有了send方法,這就是實現了兩個完全沒有聯絡的兩個物件實現了同一個方法,解耦性很強。

Method Swizzling

runtime的黑魔法,執行時將兩個Method進行exchange,本質上是SEL 和IMP的互換。

也是AOP(面向切面程式設計)的一種實現方式,用在AOP 埋點統計  實現異常保護,陣列越界

埋點統計

參照https://www.jianshu.com/p/0497afdad36d

陣列越界

 

網上的好多demo,列印奔潰資訊,引入工程後,照樣carsh,我親自嘗試後推薦https://github.com/chenfanfang/AvoidCrash,沒有問題。