為什么說 Object-C 是動態(tài)語言?

為什么說 Object-C 是動態(tài)語言?

前言

為什么寫這篇文章

干了有一段時間的iOS了,今天看公眾號推送了一篇關于面試題的文章,很多基礎問題都不知道怎么回答,看網(wǎng)上的答案都不怎么通俗,太書面了,我決定以口頭表達的方式整理這些回答。
參考鏈接,為什么說 Object-C 是動態(tài)語言?

什么是動態(tài)語言?

動態(tài)語言就是,程序在運行時可以改變,可以加新的(函數(shù)),可以替換和刪除舊的。

http://m.itdecent.cn/p/b1a6be1bdc87 這篇文章中提到,動態(tài)語言可以理解為兩種:

  • 動態(tài)語言:(Dynamic programming Language -動態(tài)語言或動態(tài)編程語言
  • Dynamically Typed Language(動態(tài)類型語言)所謂的動態(tài)類型語言,就是類型的檢查是在運行時做的。

其實沒有一個動態(tài)語言的標準,只是相對靜態(tài)的而言,只要是在運行時可以修改的,都可以理解為動態(tài)語言。

回答

Object-C 將很多事放到了運行時來處理。為了實現(xiàn)這樣的工作,Obejct-C 提供了 Objc Runtime 機制來動態(tài)創(chuàng)建類和對象,進行消息發(fā)送和轉發(fā)。

哪些事

  • 動態(tài)類型 - 運行時再決定對象的類型(id類型就是最直接的體現(xiàn))
  • 動態(tài)綁定 - 對象類型確定后才將屬性和消息(函數(shù))與對象綁定。
  • 動態(tài)加載 - 動態(tài)加載所需資源,比如@2x圖片。

這里已經(jīng)可以回答本文的問題了。但是這并沒有什么知識點,真正的知識點還得接著學。Runtime主要做了哪些事,還是回原文章看吧。

記得剛畢業(yè)的時候跟同學一起去面試,面試官問了我?guī)讉€技術問題我就敗下陣來,同學比我厲害,面試官問了他好幾個問題,回答完接著深入問,一直問道回答不上來。最后面試官告訴他,“要一直問到你回答不上來,或者我也不知道”,這樣才能知道你到底了解多少。知識是無窮無盡的,一個runtime可能面試官會問很深很深,我自然是了解的不深,以后一定多加學習。

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

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

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