OC消息傳遞機(jī)制與消息轉(zhuǎn)發(fā)機(jī)制

oc運(yùn)行機(jī)制是動(dòng)態(tài)的,運(yùn)行時(shí)所執(zhí)行的代碼是由運(yùn)行環(huán)境來(lái)決定的,靜態(tài)的機(jī)制是由編譯器來(lái)決定的,(編譯期是指把你的源程序交給編譯器編譯的過(guò)程,最終目的是得到可執(zhí)行的文件。運(yùn)行期指的是你將可執(zhí)行文件交給操作系統(tǒng)(輸入文件名,回車)執(zhí)行、直到程序執(zhí)行結(jié)束的期間,執(zhí)行的目的是為了實(shí)現(xiàn)程序的功能。)

oc是動(dòng)態(tài)綁定,調(diào)用編譯階段并不會(huì)去綁定執(zhí)行的函數(shù),只有在運(yùn)行的時(shí)候才回去對(duì)象中查找方法,接受方法的類中有個(gè)方法列表,如果能找到方法就調(diào)用,找不到的話就回去父類中查找

C語(yǔ)言是靜態(tài)綁定,在編譯的階段就能決定所要調(diào)用的函數(shù)


消息轉(zhuǎn)發(fā)機(jī)制

當(dāng)一個(gè)對(duì)象無(wú)法處理時(shí)間的時(shí)候會(huì)進(jìn)入消息轉(zhuǎn)發(fā)流程,可以通過(guò)運(yùn)行時(shí)機(jī)制,將我們需要的某個(gè)方法加入到類中,這就是運(yùn)行時(shí)添加屬性的原理

分類不能直接添加屬性是因?yàn)榉诸愔袥](méi)有實(shí)現(xiàn)set和get方法,即使手寫(xiě)實(shí)現(xiàn)也不能調(diào)用,如果加入屬性就會(huì)崩潰,因?yàn)檎{(diào)用的時(shí)候找不到set和get方法,這樣會(huì)進(jìn)入消息轉(zhuǎn)發(fā)機(jī)制,此時(shí)就可以利用運(yùn)行時(shí)機(jī)制,當(dāng)進(jìn)入消息轉(zhuǎn)發(fā)機(jī)制后,利用運(yùn)行時(shí)機(jī)制為其生成set和get方法,進(jìn)而添加屬性.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,535評(píng)論 19 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,638評(píng)論 18 399
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,041評(píng)論 0 9
  • 其實(shí)那香蕉真是用來(lái)吃的 這是要逼死強(qiáng)迫癥的節(jié)奏?。?我差不多是個(gè)死貓了,你們別管我了 兄弟,手機(jī)我也不要了,你人沒(méi)...
    搞笑精選app閱讀 218評(píng)論 0 0
  • 參加雙語(yǔ)活動(dòng),剛開(kāi)始的時(shí)候,我陪October玩,莎莎帶著嗖嗖嗖參加活動(dòng),到了第二個(gè)環(huán)節(jié),莎莎過(guò)來(lái)和我說(shuō),你帶嗖嗖...
    S_O_S_O_爸爸閱讀 155評(píng)論 0 0

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