為什麼說oc時動態語言?表現在哪些方面?

2021-08-16 12:34:23 字數 776 閱讀 9189

oc類的型別和資料變數的型別都是在執行時確定的,而不是在編譯時確定的,所以說oc是動態語言。

它主要表現在三個方面:

1、動態型別:

即執行時再決定物件的型別。比如id型別,任何物件都可以被id指標所指,只有在執行時才能決定是什麼型別。像內建的明確的基本型別都屬於靜態型別(int、nsstring等)。靜態型別在編 譯的時候就能被識別出來。所以,若程式發生了型別不對應,編譯器就會發出警告。而動態型別就編譯器編譯的時候是不能被識別的,要等到執行時(run time),即程式執行的時候才會根據語境來識別。

2.動態繫結:

基於動態型別,在某個例項物件被確定後,其型別便被確定了。該物件對應的屬性和響應的訊息也被完全確定,也就是說讓**在執行時判斷需要呼叫什麼方法,而不是在編譯時,這就是動態繫結。比如我們一般向乙個nsobject物件傳送-respondstoselector:或者 -instancesrespondtoselector:等來確定物件是否可以對某個sel做出響應,而在oc訊息**機制被觸發之前,對應的類 的+resolveclassmethod:和+resolveinstancemethod:將會被呼叫,在此時有機會動態地向類或者例項新增新的方 法,也即類的實現是可以動態繫結的;iskindofclass也是一樣的道理。

3.動態載入:

根據需求載入所需要的資源,這點很容易理解,對於ios開發來說,基本就是根據不同的機型做適配。最經典的例子就是在retina裝置上載入@2x的,而在老一些的普通屏裝置上載入原圖

為什麼php動態語言,動態語言靜態化

toc 什麼是動態語言靜態化 將現有php等動態語言的邏輯 生成為靜態html檔案,使用者訪問動態指令碼重定向到靜態html檔案的過程。對實時性要求不高的頁面 為什麼要靜態化 動態指令碼通常會做邏輯計算和資料查詢,訪問量越大,伺服器壓力越大 訪問量大時可能會造成cpu負載過高,資料庫伺服器壓力過大 ...

我們說的oc是動態執行時語言是什麼意思?

1 kvc和kvo區別,分別在什麼情況下使用?答 kvc key value coding kvo key value observing 理解kvc與kvo 鍵 值 編碼與鍵 值 監看 當通過kvc呼叫物件時,比如 self valueforkey somekey 時,程式會自動試圖通過幾種不同的...

CIO為什麼說「不」

選擇 是 對於有些人來說,是一種逃避責任的最好辦法,所有的後果都可以由那個提出建議的人來承擔。而當你說 不 的時候,不但會憑空給自己樹立很多對立面,同時也會將所有的責任肩負在自己身上。說 不 對於 cio來講是需要一定的勇氣,但更為重要的是它要求 cio具備乙個理性的頭腦。itit it建設勢必要 ...