1.動(dòng)態(tài)類型:
?即運(yùn)行時(shí)再?zèng)Q定對象的類型兔综。簡單說就是id類型饿凛,任何對象都可以被id指針?biāo)福挥性谶\(yùn)行時(shí) ? ? ? ?才能決定是什么類型邻奠。像內(nèi)置的明確的基本類型都屬于靜態(tài)類型(int笤喳、NSString等)。靜態(tài)類型在編 譯的時(shí)候就能被識別出來碌宴。所以杀狡,若程序發(fā)生了類型不對應(yīng),編譯器就會(huì)發(fā)出警告贰镣。而動(dòng)態(tài)類型就編譯器編譯的時(shí)候是不能被識別的呜象,要等到運(yùn)行時(shí)(run time),即程序運(yùn)行的時(shí)候才會(huì)根據(jù)語境來識別碑隆。所以這里面就有兩個(gè)概念要分清:編譯時(shí)跟運(yùn)行時(shí)恭陡。
2.動(dòng)態(tài)綁定:
基于動(dòng)態(tài)類型,在某個(gè)實(shí)例對象被確定后上煤,其類型便被確定了休玩。該對象對應(yīng)的屬性和響應(yīng)的消息也被完全確定,這就是動(dòng)態(tài)綁定劫狠。比如我們一般向一個(gè)NSObject對象發(fā)送-respondsToSelector:或者 -instancesRespondToSelector:等來確定對象是否可以對某個(gè)SEL做出響應(yīng)拴疤,而在OC消息轉(zhuǎn)發(fā)機(jī)制被觸發(fā)之前,對應(yīng)的類 的+resolveClassMethod:和+resolveInstanceMethod:將會(huì)被調(diào)用独泞,在此時(shí)有機(jī)會(huì)動(dòng)態(tài)地向類或者實(shí)例添加新的方 法呐矾,也即類的實(shí)現(xiàn)是可以動(dòng)態(tài)綁定的;isKindOfClass也是一樣的道理懦砂。
3.動(dòng)態(tài)加載:
所謂動(dòng)態(tài)加載就是我們做開發(fā)的時(shí)候icon圖片的時(shí)候在Retina設(shè)備上要多添加一個(gè)張@2x的圖片,當(dāng)設(shè)備更換的時(shí)候,圖片也會(huì)自動(dòng)的替換蜒犯。