IOS---Runtime 之理解

1:弄了三天的IOS Runtime 終於有了重新認識,因爲 Objective-C 是一門動態語言,所以它需要一個運行時系統 ,一切語法結構都是先轉化爲對應的C語言後再運行的
2:Runtime 應用場景非常多,只是我們沒有發現,比如如何打印日誌,方法交換,方法交換必然涉及到分類的概念,用刀分類的概念必然會想到在分類中加屬性可以嗎?可以爲什麼?不可用爲什麼?
答曰:正常的思路下在分類中是不可以添加成員屬性變量的,爲什麼?1)分類裏面不能添加Ivar是因爲分類本身並不是一個真正的類,它並沒有自己的ISA 類最開始生成了很多基本屬性,比如IvarList,MethodList,分類只會將自己的method attach到主類,並不會影響到主類的IvarList。這就是爲什麼分類裏面不能增加成員變量的原因。 2)category是無法添加實例變量的(因爲在運行期,對象的內存佈局已經確定,如果添加實例變量就會破壞類的內部佈局,這對編譯型語言來說是災難性的)如何添加呢?可以Attache
3:然後可以在項目中時時用到Runtime 數據解析,MJExtension 和YYModel 參照項目中使用,的確花樣百出,但是效率最高的應該是自己手寫,第三方框架個人比較偏好YYModel 參照網站 https://blog.ibireme.com/2015/10/23/ios_model_framework_benchmark/
4:方法交換
如何在每個類中打印日誌呢?思索下(load )

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章