什么是Runtime?
? ? ?RunTime簡稱運行時。就是系統(tǒng)在運行的時候的一些機制,其中最主要的是消息機制。對于C語言,函數(shù)的調用在編譯的時候會決定調用哪個函數(shù)(C語言的函數(shù)調用請看這里)。編譯完成之后直接順序執(zhí)行,無任何二義性。OC的函數(shù)調用成為消息發(fā)送。屬于動態(tài)調用過程。在編譯的時候并不能決定真正調用哪個函數(shù)(事實證明,在編譯階段,OC可以調用任何函數(shù),即使這個函數(shù)并未實現(xiàn),只要申明過就不會報錯。而C語言在編譯階段就會報錯)。只有在真正運行的時候才會根據(jù)函數(shù)的名稱找到對應的函數(shù)來調用.
Runtime的用在什么地方,怎么用?
? ? ? 遍歷一個類的所有成員變量(屬性)\所有方法

? ? ? 獲取一個類中所有的屬性,屬性類型,并修改屬性值

?? ? 獲取一個類中所有property屬性

? ?利用運行時歸檔和解檔


?? 動態(tài)添加方法,如果一個類方法非常多,加載類到內(nèi)存的時候也比較耗費資源,需要給每個方法生成映射表,可以使用動態(tài)給某個類,添加方法解決。


? ?給分類添加屬性.category可以擴展類的方法,但是不能擴張類的屬性,通過runtime可以實現(xiàn)


附上demo鏈接: ?github.com/StarRain-L/RuntimeDemo
不足之處,歡迎指正!!!!