oc語言的優(yōu)點和缺點

oc語言最大的優(yōu)點和不足是什么?對于不足,有沒有可用的方法來繞過這些不足來實現(xiàn)需求。

一、oc語言的特性

OC做為一門面向?qū)ο笳Z言,具有面向?qū)ο蟮恼Z言特性,如封裝、繼承、多態(tài)。他具有靜態(tài)語言的特性(如C++),又有動態(tài)語言的效率(動態(tài)綁定、動態(tài)加載等)。

OC的動態(tài)特性表現(xiàn)為了三個方面:動態(tài)類型、動態(tài)綁定、動態(tài)加載。之所以叫做動態(tài),是因為必須到運行時(run time)才會做一些事情。

(1)動態(tài)類型

動態(tài)類型,說簡單點就是id類型。動態(tài)類型是跟靜態(tài)類型相對的。像內(nèi)置的明確的基本類型都屬于靜態(tài)類型(int、NSString等)。靜態(tài)類型在編譯的時候就能被識別出來。所以,若程序發(fā)生了類型不對應(yīng),編譯器就會發(fā)出警告。而動態(tài)類型就編譯器編譯的時候是不能被識別的,要等到運行時(run time),即程序運行的時候才會根據(jù)語境來識別。所以這里面就有兩個概念要分清:編譯時跟運行時。基本的動態(tài)特性在常規(guī)的Cocoa開發(fā)中非常常用,特別是動態(tài)類型和動態(tài)綁定。由于Cocoa程序大量地使用Protocol-Delegate的 設(shè)計模式,因此絕大部分的delegate指針類型必須是id,以滿足運行時delegate的動態(tài)替

(2)動態(tài)綁定

動態(tài)綁定(dynamic binding),讓代碼在運行時判斷需要調(diào)用什么方法,而不是在編譯時。與其他面向?qū)ο笳Z言一樣,方法調(diào)用和代碼并沒有在編譯時連接在一起,而是在消息發(fā)送時才進行連接。運行時決定調(diào)用哪個方法。

(3)動態(tài)加載

根據(jù)需求加載所需要的資源,這點很容易理解,對于iOS開發(fā)來說,基本就是根據(jù)不同的機型做適配。最經(jīng)典的例子就是在Retina設(shè)備上加載@2x 的圖片,而在老一些的普通屏設(shè)備上加載原圖。隨著Retina iPad的推出,和之后可能的Retina Mac的出現(xiàn),這個特性相信會被越來越多地使用。

oc 語言的優(yōu)點:類目、動態(tài)識別、支持c語言、oc與c++可以混編

缺點:不支持命名空間、不支持運算符重載、不支持多重繼承



多態(tài)(Polymorphism)OC中的多態(tài)則是不同對象對同一消息的不同響應(yīng)方式,子類通過重寫父類的方法來改變同一消息的實現(xiàn),體現(xiàn)多態(tài)性。具體來說指的是允許父類的指針指向子類對象,成為一個更泛化、容納度更高的父類對象,這樣父對象就可以根據(jù)實際是哪種子類對象來調(diào)用父類同一個接口的不同子類實現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容