本人沒有實際用過Objective-C,只是讀過一些教程。但是作為一個實際工作中學習使用過JS、Java、C++、ActionScript、Ruby等語言的人看來,Objective-C不止是醜陋,簡直是無法忍受的醜陋。它真的有任何的優點嗎?
回覆列表
-
1 # 年輕人不講捂得
-
2 # 我讀得書多不會騙你
優點嘛,找個最流行的語言做對比吧,就java了
相容C語言,不用像java一樣寫JNI的中間程式碼,這在呼叫一些C/CPP的庫時優勢極為明顯支援ARC和MRC,自從引入ARC之後,一直在弱化指標的概念,學習難度降低不少,且ARC效率要比GC高;將屬性宣告和實現分開,看起來更清晰,這個我覺得挺好的,java的話屬性和方法一般寫在一個檔案裡,程式碼多了,看起來很複雜的樣子;函式表達很清楚,不知道為什麼OC的函式名和引數都很長,蘋果官方的demo也是這樣,不過看起來意思倒是很容易懂,java和一些早期的c語言喜歡用一些縮寫的名字,有時候不知道什麼意思;OC協議中定義的方法可以不強制實現,java的interface裡定義的方法必須實現,新的java版本貌似已經改了?自帶分類,這個我覺得比寫一堆繼承要好,用好了能省好多程式碼;支援block語法,java最近貌似也支援了lambda,但是以前要寫回調,很煩因為支援C語言的關係,所以也支援宏定義,一些重複的code,你要是懶的話,直接定義成宏,copy過去就完事了支援無符號數,NSUInteger還是很實用的,java這點很不好,如果對端傳過來一個無符號數,java必須要用一個更大的資料型別去包裹,否則顯示的是負數更易用的執行緒模型,單說NSOperation和java的Thread類哪個更好說不清楚,但是直接寫的話,GCD要比new完之後還要start的Thread要好用的多;更易用的資料結構,這個不跟java比了,因為都好用,但是比C++的vector好用多了繪圖和音影片處理時更方便,java的awt和swing就是屎,處理多媒體基本不用java,OC調quartz core和AVFoundation簡直不要太爽更易用的擴充套件庫,蘋果在做OSX的時候就已經寫好了很多第三方庫,後來直接移植到iOS上,java素來以庫多而著稱,但是庫的質量參差不齊,相比之下還是蘋果官方的庫更有保證別的一時半會想不起來就不寫了,無意歧視java,下次你問OC語法上有什麼缺點,我就把java的優點講出來,畢竟兩者都是我喜歡的語言,
OC確實有很多缺點,比如不安全, 其他的Java JavaScript swift 等都只有一個檔案,他卻又.h 和.m兩個檔案, 語法相對來說比較怪異, 底層算是c的結構體,c++指標,我個人覺得比Java和JavaScript要複雜一些,優點的話,也說不上就是有類似執行時,kvo,還是arc? 其實這些其他語言也有,所以不能成為什麼優點,不過相對swift來說,他的優點可能就是編譯速度快了,其他的也說不上。