iOS-Swift相比Objective-C有哪些優缺點,

來源:互聯網
上載者:User

iOS-Swift相比Objective-C有哪些優缺點,

Swift,是蘋果於2014年WWDC(蘋果開發人員大會)發布的新開發語言,可與Objective-C共同運行於Mac OS和iOS平台,用於搭建基於蘋果平台的應用程式。它是一款易學易用的程式設計語言,而且它還是第一套具有與指令碼語言同樣的表現力和趣味性的系統程式設計語言。Swift的設計以安全為出發點,以避免各種常見的編程錯誤類別。

今天,根據目前 Swift 的使用方式,我們來總結下它與 Objective-C 相比的優缺點。

"Swift" PK "Objective-C"優點:

1、 簡潔的文法:

我們不得不承認的是swift語言比OC精簡,整個項目中丟掉了標頭檔,以及標頭檔的引入。

2、報錯精準:

報錯的時候直接顯示報錯行。

3、定義變數簡單:

定義變數不用區分整型,浮點型等等,變數使用var,常量使用let。

4、可視化互動效果:

開發工具帶來了Xcode Playgrounds功能,該功能提供強大的互動效果,能讓Swift原始碼在撰寫過程中即時顯示出其運行結果。

5、函數式編程的支援:

Swift 語言本身提供了對函數式編程的支援;

Objc 本身是不支援的,通過引入 ReactiveCocoa 這個庫才可支援函數式編程。

缺點:

1、Swift目前還沒有得到全面性的推廣:

很多大公司,以及一些老的項目,仍然使用OC語言進行開發。老程式員從oc轉到swift是一件並不簡單的事,所以當你在項目中遇到一些問題的時候,你會發現,身邊能幫你解決問題的人幾乎沒有,網路上的資源也是很稀有的。

2、Swift暫時還不穩定:

你會發現,swift2.0,swift3.0,以及現在的swift4.0是有很大的區別的,每次升級開發工具的時候,看到幾十甚至上百個錯誤提示,難免急出一身冷汗。

3、第三方庫的支援不夠多:

我們在做一個項目時,通常會用到一些第三方,但是現在swift版本的第三方是非常稀有的,以至於在開發的過程中,不得不匯入OC版本的第三方,這個時候便成了混合開發,有經驗的朋友會發現,有的相容性並不是那麼好,而且在混合開發的時候,項目會變大,運行速度真的是太慢了。

4、App體積變大:

使用 Swift 後, App 體積大概增加 5-8 M 左右,對體積大小敏感的慎用。(體積變大的原因是因為 Swift 還在變化,所以 Apple 沒有在 iOS 系統裡放入 Swift 的運行庫,反而是每個 App 裡都要包含其對應的 Swift 運行庫。)

5、上線方式改變:

在上線的時候,不能使用application Loader上傳包檔案,會提示你丟失了swift support files,應該使用xcode直接上傳。

仁者見仁智者見智,有人說Swift遲早要取代OC,有人說數年內依舊是OC的天下,至於選擇哪種語言開發程式,就看你自己的選擇了。(有曆史包袱的大廠 MRC 都還沒消除乾淨,上 Swift 更是遙不可及,也許等到公司倒閉都不會這樣做,移植的成本極大。小公司船小好迴轉,隨你怎麼折騰,重寫也不是完全不可能。)


作者:Joh蝸牛
連結:https://www.jianshu.com/p/73df8495ad3a
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.