1. 為什么說(shuō)Objective-C是一門動(dòng)態(tài)的語(yǔ)言?

整個(gè)《面試題》都是對(duì)2017年6月iOS招人心得(附面試題)的整理。

1.解釋動(dòng)態(tài)語(yǔ)言、靜態(tài)語(yǔ)言

動(dòng)態(tài)類型語(yǔ)言:動(dòng)態(tài)類型語(yǔ)言是指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語(yǔ)言,也就是說(shuō),在用動(dòng)態(tài)類型的語(yǔ)言編程時(shí),永遠(yuǎn)也不用給任何變量指定數(shù)據(jù)類型,該語(yǔ)言會(huì)在你第一次賦值給變量時(shí),在內(nèi)部將數(shù)據(jù)類型記錄下來(lái)。Python和Ruby就是一種典型的動(dòng)態(tài)類型語(yǔ)言,其他的各種腳本語(yǔ)言如VBScript也多少屬于動(dòng)態(tài)類型語(yǔ)言。

靜態(tài)類型語(yǔ)言:靜態(tài)類型語(yǔ)言與動(dòng)態(tài)類型語(yǔ)言剛好相反,它的數(shù)據(jù)類型是在編譯其間檢查的,也就是說(shuō)在寫程序時(shí)要聲明所有變量的數(shù)據(jù)類型,C/C++是靜態(tài)類型語(yǔ)言的典型代表,其他的靜態(tài)類型語(yǔ)言還有C#、JAVA等。Objective-C雖然在寫程序時(shí)聲明了變量的數(shù)據(jù)類型,但是在編譯期間并沒(méi)有檢查。因?yàn)镺bjective-C類和對(duì)象都是在運(yùn)行時(shí)候創(chuàng)建的,所以編譯期間沒(méi)辦法檢查。
??總結(jié)::兩者的區(qū)別在于是否在編譯期間做數(shù)據(jù)類型檢查。

2.OC是動(dòng)態(tài)語(yǔ)言的原因

Objective-C 是C 的超集,在C 語(yǔ)言的基礎(chǔ)上添加了面向?qū)ο筇匦?,并且利用Runtime 這個(gè)運(yùn)行時(shí)機(jī)制,為Objective-C 增添了動(dòng)態(tài)的特性。
??
??Objective-C 可以通過(guò)Runtime 這個(gè)運(yùn)行時(shí)機(jī)制,在運(yùn)行時(shí)動(dòng)態(tài)的添加變量、方法、類等,所以說(shuō)Objective-C 是一門動(dòng)態(tài)的語(yǔ)言。
??
??Objective-C 使用的是 “消息結(jié)構(gòu)” 并非 “函數(shù)調(diào)用”:使用消息結(jié)構(gòu)的的語(yǔ)言,其運(yùn)行時(shí)所應(yīng)執(zhí)行的代碼由運(yùn)行期決定;而使用函數(shù)調(diào)用的語(yǔ)言,則由編譯器決定。
??
??總結(jié):OC利用Runtime可以在運(yùn)行的時(shí)候創(chuàng)建類,修改類,修改對(duì)象調(diào)用的方法。

最后編輯于
?著作權(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)容

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