RuntimeMethodSwizzling原理

RuntimeMethodSwizzling編程方式, 也可以叫作AOP(Aspect-Oriented Programming, 面向切面編程), AOP可以解決OOP由于切面需求導(dǎo)致單一職責(zé)被破壞的問題, 通過AOP可以不侵入OOP開發(fā), 非常方便地插入切面需求功能

直接使用Runtime方法交換開發(fā)的風(fēng)險有哪些

Runtime不光能夠進(jìn)行方法交換, 還能夠在運行時處理Objective-C特性相關(guān)(比如類、成員函數(shù)、繼承)的增刪改操作

四個典型的直接使用Runtime方法進(jìn)行方法交換的風(fēng)險

  1. 需要在+load方法中進(jìn)行交換,因為如果在其他時候進(jìn)行方法交換, 難以保證另外一個線程中不會同時調(diào)用被交換的方法, 從而導(dǎo)致程序不能按預(yù)期執(zhí)行
  2. 被交換的方法必須是當(dāng)前類的方法, 不能是父類的方法, 直接把父類的實現(xiàn)拷貝過來不會起作用, 父類的方法必須在調(diào)用的時候使用, 而不是方法交換時使用
  3. 交換的方法如果依賴了cmd, 那么交換后, 如果cmd發(fā)生了變化, 就會出現(xiàn)各種奇怪問題, 而且這些問題還很難排查. 特別是交換了系統(tǒng)方法, 你無法保證系統(tǒng)方法內(nèi)部是否依賴了cmd
  4. 方法交換命名沖突, 可能導(dǎo)致失敗
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

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