一直都在聽著身邊的人說禁偎,總感覺似懂非懂的,終于借助這個機會排龄,讓自己好好沉靜下來理了理思路波势。
之前每次翻閱RunTime的時候,總感覺知道橄维,但是一旦平時他人問起是尺铣,卻是吐不出來,有時真的很是尷尬争舞。為了避免更多的尷尬凛忿,所以想弄明白一些。
RunTime是OC中底層的一套C語言的API竞川,他的核心是消息分發(fā)店溢。RunTime是運行時候的一些機制,怎么說呢委乌?對于C語言床牧,函數(shù)的調(diào)用在編譯的時候決定調(diào)用哪個函數(shù),編譯完成之后遭贸,直接順序執(zhí)行戈咳,沒有其他的過程。然而OC的函數(shù)調(diào)用則是轉(zhuǎn)變成了消息分發(fā)壕吹,實屬動態(tài)調(diào)用過程著蛙。意思就是在編譯的時候不能決定調(diào)用哪個函數(shù),只有在運行的時候才會根據(jù)函數(shù)名稱找到對應的函數(shù)耳贬。
那RunTime對于我們而言在OC中如何使用的踏堡,其實我們一直都在使用它,只是之前不是很清楚原來這就是Runtime機制咒劲。簡單點說Block的運行原理就是RunTime的運行機制暂吉,還比如這樣一句簡單的代碼[objc say];其中objc是對象胖秒,say是一個函數(shù)名稱缎患,在編譯之時RunTime就會將這句簡單的代碼轉(zhuǎn)換成objc_msgSend(objc,@selectoer,(say));源于OC早早就將RunTime納入其中慕的,對其進行了分裝,因此我們使用起來極為的方便挤渔。