Objective和Swift,你該選擇哪個


一、OC和swift簡介

     OC:基礎c的面向對象的編程語言,1980年開始使用,主要應用於MAC OSX和iOS平台應用的開發,至今已有三十多年歷史,因蘋果4和4s的火爆,OC在10-14年極為火爆,語言排行持續飆升,11年贏得了 TIOBE 2011 年度編程語言。

     Swift,蘋果於2014年WWDC(蘋果開發者大會)發布的新開發語言,可與OC共同運行於MAC OS和iOS平台,用於搭建基於蘋果平台的應用程序。Swift是一款易學易用的編程語言,而且它還是第一套具有與腳本語言同樣的表現力和趣味性的系統編程語言。Swift的設計以安全為出發點,以避免各種常見的編程錯誤類別。2015年12月4日,蘋果公司宣布其Swift編程語言現在開放源代碼。可見蘋果公司對swift的青睞。

二、OC和swift比較

      相對OC,Swift 是一種新的編程語言,用於編寫 iOS 和 OS X 應用。Swift 結合了 C 和 Objective-C 的優點並且不受C兼容性的限制。Swift 采用安全的編程模式並添加了很多新特性,這將使編程更簡單,更靈活,也更有趣。Swift 是基於成熟而且倍受喜愛得 Cocoa 和 Cocoa Touch 框架,他的降臨將重新定義軟件開發。Swift集成了Objective-C 的命名參數以及動態對象模型,可以無縫對接到現有的 Cocoa 框架,並且可以兼容 Objective-C 代碼。在此基礎之上,Swift 還有許多新特性並且支持過程式編程和面向對象編程。

      Swift更加安全,Swift消除了不安全的代碼。變量總是初始化之前使用,數組和整數檢查溢出,內存自動管理。語法被調整到可以很容易地定義你的意圖 - 例如,簡單的三個字符的關鍵字定義一個變量(var)或常量(let)。

      在Swift的安全模式被調整為強大的Cocoa和Cocoa Touch的API。認識和妥善處理其中的對象是零案件是基本的框架和Swift的代碼使這個非常容易。添加一個字符可以代替曾經Objective-C中整行的代碼。這一相互配合,使構建iOS和Mac應用程序比以前更加容易和安全。在編譯時也能屏蔽掉一些使用OC語言會產生的問題。

      OC可以與C和C++混編,不過其smalltalk風格的語法讓習慣C系語言的人很不習慣;swift靈活一些,而且吸收了其他語言的一些較優的語法特性,但Swift是強語法,其編譯速度比較慢。不過都是iOS和OS X平台上的特定語言,編寫原生程序的話只能用他們,所以說找他們的優點和不足其實沒什么意義,語言也就是一種表達符號,過多討論這些沒有價值,編程的思想才是最重要的。

 三、OC和swift交叉使用

      在Swfit代碼中添加OC文件的時候,需要依賴一個bridging header文件,Xcode會在你新建一個OC文件的時候自動幫你創建(項目是使用Swift語言創建的),點擊yes,Xocde就會在新建OC文件的同時幫我們新建一個 xxx-Bridging-Header.h 文件,xxx是你的項目名稱(Product Module),然后我們得編輯這個文件才能讓Swfit代碼調用OC代碼,如果是手動拖入,則需要我們在Build Setting手動配置。

       當在OC里調用Swift中的代碼時,需要依賴一個xcode自動生成的頭文件,這個自動生成的頭文件定義了項目中所有的Swift文件,這個頭文件的命名為 “xxx-Swift.h” ,xxx為項目的名稱,此外就不需要再做任何事情了,你只需要在OC代碼里導入這么一個文件,就可以跟沒事一樣拿任意一個Swift中的代碼用了

 

調用Swift代碼

調用OC代碼

Swift代碼

無需聲明

#import "ProductModuleName-Swift.h”

OC代碼

依賴bridging header文件

#import "Header.h”

 

四、OC和swift選擇

        從語言上來講,swift比oc更加簡潔高效。 然而從開發角度上看,swift要比oc難度大,對於已經熟悉 Cocoa, Cocoa touch 開發的開發人員來講,Swift 還是很容易上手的,對於完全不懂Objective-C ,並且沒有任何 Cocoa, Cocoa touch 開發經驗的人來講,直接上手學習Swift 依然會非常困難。因為你不但要熟悉語言結構,你還要去熟悉各種API, 熟悉整個Cocoa, Cocoa ,所以建議初學者還是從OC起步會更加順手。

        swift作為一門新語言,里邊還是存在不少問題,近幾年版本更新會較為頻繁,所以近期還是建議使用oc開發。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM