首頁>Club>
本人沒有實際用過Objective-C,只是讀過一些教程。但是作為一個實際工作中學習使用過JS、Java、C++、ActionScript、Ruby等語言的人看來,Objective-C不止是醜陋,簡直是無法忍受的醜陋。它真的有任何的優點嗎?
8
回覆列表
  • 1 # 年輕人不講捂得

    OC確實有很多缺點,比如不安全, 其他的Java JavaScript swift 等都只有一個檔案,他卻又.h 和.m兩個檔案, 語法相對來說比較怪異, 底層算是c的結構體,c++指標,我個人覺得比Java和JavaScript要複雜一些,優點的話,也說不上就是有類似執行時,kvo,還是arc? 其實這些其他語言也有,所以不能成為什麼優點,不過相對swift來說,他的優點可能就是編譯速度快了,其他的也說不上。

  • 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的優點講出來,畢竟兩者都是我喜歡的語言,

  • 中秋節和大豐收的關聯?
  • 五一有人去了大餘玩嗎?感覺怎麼樣?