swift的背景

Objective C是八十年代初Brad Cox和Tom Love發明的,1988年賈伯斯的Next公司獲得了這門編程語言的授權,後來Next被蘋果公司收購了,Objective C就成了蘋果公司的當家語言。 Objective C經過三十餘年的修修補補,蘋果公司於是考慮以現在的編譯程序為基礎設計一門全新的程序設計語言。   2010年7月,蘋果公司編譯程序開發團隊的首席架構師克里斯(Chris Lattner)接到了一項任務——為OS X和iOS平台開發下一代新的程序設計語言。克里斯參考了Objective C、Rust、Haskell、Ruby、Python、C#等優秀程序設計語言的特點,進行了廢寢忘食的思考、設計、編寫和測試,用了近一年的時間實現了大部分基礎語言結構。到了2013年,克里斯帶領他的團隊逐步完成了一個全新語言的語法設計、編譯程序、框架、集成環境和說明文檔等相關工作,並將此全新程序設計語言命名為“swift”。 2014年6月,蘋果公司在WWDC(Apple Worldwide Developers Conference蘋果公司全球軟件開發者年會)展示了swift語言,短短一個月的時間,swift就席捲了全球!

swift與OC的聯繫

swift和Objective C共用一套運行時環境,swift的類型可以橋接到Objective C(下面我簡稱OC),反之亦然。兩者可以互相引用混合編程。其次就是,OC之前積累的很多類庫,在swift中大部分依然可以直接使用,當然,swift3之後,一些語法改變了很多,不過還是有跡可循的。 OC出現過的絕大多數概念,比如引用計數、ARC、屬性、協議、接口、初始化、擴展類、命名參數、匿名函數等,在swift中繼續有效(可能最多換個術語)。 swift大多數概念與OC一樣。當然swift也多出了一些新興概念,這些在OC中是沒有的,比如範型、元組等。

swift的特點

1、swift是一種强類型語言,所有變數在聲明或者定義的時候會確定類型,並且這個類型不能再被修改。

2、swift是安全的,强類型是安全性的體現之一。

3、swift所有的變數(可選型除外)都必須經過初始化才能訪問使用,

(1)、非可選型變數,必須初始化,在結構體和類中,未初始化的非可選型内容,必須在搆造函數中先進行初始化。

(2)、可選型

顯式聲明?:

如String?, 無需初始化,預設值為nil,使用時需要解包返回確切類型數據使用。

隱式聲明!:

如String!, 也無需要初始化,預設值nil,可以解包,也可以不解包直接使用,也就是說,比如

var t:String!= “TEST”

如果有一個變數a是String類型,一個變數b是String? 類型,那麼若a = t,那麼可選型t就無需解包,直接返回一個確切的String類型,而b = t,則是返回一個可選型,這種可選型根據實際需要自動處理。

Optional管道聲明:

需要初始化,這種管道不會自動初始化一個nil值,並且這種管道的也是顯示聲明。

4、swift資料類型分值類型和參考類型:

值類型:一般記憶體分配在棧中,進行賦值都是深拷貝,會開闢全新的記憶體空間給新變數,對新變數修改不會影響原變數,結構體(struct)、枚舉(enum)等都是值類型,像Int、Double、Float、tuples、String、Array、Dictionary、Set等,實質都是struct,所以也是值類型。

參考類型:就是指針,一般記憶體分配在堆中,進行賦值會只拷貝值的記憶體位址,不會開闢新的記憶體空間給新變數存儲值,對新變數修改會影響原變數,像類、閉包、函數等,都是參考類型。

5、_ 在swift中有特殊的意義,一般使用來,用於占位進行忽略,比如函數參數名忽略,比如10_ 000(跟10000一樣,但是加_後更易讀)。

6、swift語言,在類的繼承上,方法是可重寫的,而在類中,方法也是可重載的。

7、swift中,可選型的本質是枚舉。

8、swift是面向協定的語言:

(1)、swift語言是面向對像的,但是swift標準庫中,基礎類只有幾個,而協定類型卻有幾十個,充分說明了swift語言中協定的重要性。

(2)、與OC中的協定不同的是,swift的協定是可多繼承和擴展的,並且協定裏不僅可以有方法,還可以有内容,這是OC的協定不具備的,在swift中,協定的存在,能更好的去抽象出兩個不同事物的共同特性,做到一些類無法做到的是,比如飛機和鳥,明顯不同類型,也沒有繼承關係的兩種類型, 他們都有翅膀、都會飛行的共同性,最好的選擇就是協定了。

選擇swift多於Objective C的四大理由

一、更容易閱讀:

由於語言是基於C語言,Objective C使用像“@”這樣的符號,並使其成為一個冗長而複雜的程式碼。 另一方面,由於swift不是建立在C上的,所以它統一了關鍵字,所以不需要使用“@”。 此外,甚至不需要半冒號和圓括號。 對於方法和函數調用,swift使用標準做法,用逗號分隔括弧內的參數列表。 結果,程式碼變得更簡潔,語法和語法簡單; 與Objective C相比,程式碼的可讀性更容易。

二、更容易維護

把冗長的程式碼縮短。 Objective C必須維護兩個檔案以提高效率和構建時間,而swift將這兩個檔案組合成單個程式碼檔案,减少了額外的維護工作,同時提高了程式碼的質量。

三、更安全

空指針以令人驚歎的方式在Objective C中處理,當您使用相同的方法調用時,沒有任何反應。 如果您寫錯了程式碼,swift會生成編譯器錯誤。 所以,如果你使用swift,那麼這個bug就不會被忽略,或者它會被更早地修復,使它比Objective C更安全。

四、統一記憶體管理

Objective C具有面向對像程式碼和Cocoa API的自動參考計數(ARC)支持,但Core Graphics中的記憶體管理曾經是程式師的責任。 但是,swift還支持過程C程式碼和核心圖形。

除了上述的優點之外,swift需要的程式碼越少越好。 此外,它涉及更少的名稱衝突,它支持動態庫。 與此同時,它鼓勵互動式編碼,總之,swift是企業APP開發的未來。

既然您有很多理由喜歡swift而不是Objective C,那麼您最好先切換並集中所有的優點,以充分利用它。

總結

綜上所述,swift在很多語法以及功能上會比OC語言更適合新的APP開發。所以越來越多的個人開發者以及企業開發都開始選擇使用swift開發,同時由於Apple公司日漸重視以及各大第三方庫提供者以及公司逐漸轉換為swift語言,在對接上會更加便捷。所以越來越多的人選擇swift。

20,465 thoughts on “why more people chose swift”

  1. I blog quite often and I truly thank you for your information. This great article has truly peaked my interest. I am going to book mark your website and keep checking for new details about once per week. I subscribed to your RSS feed as well.

  2. I would like to thnkx for the efforts you’ve put in writing this site. I am hoping the same high-grade blog post from you in the upcoming also. Actually your creative writing abilities has encouraged me to get my own site now. Really the blogging is spreading its wings rapidly. Your write up is a great example of it.

  3. Great post right here. One thing I would like to say is that most professional career fields consider the Bachelor’s Degree as the entry level standard for an online degree. Even though Associate Certifications are a great way to start, completing your Bachelors reveals many entrances to various careers, there are numerous on-line Bachelor Diploma Programs available coming from institutions like The University of Phoenix, Intercontinental University Online and Kaplan. Another concern is that many brick and mortar institutions offer you Online types of their qualifications but commonly for a considerably higher cost than the corporations that specialize in online higher education degree plans.

  4. Hi there, just was alert to your weblog via Google, and found that it’s truly informative. I?m gonna be careful for brussels. I will appreciate when you continue this in future. Lots of other people can be benefited out of your writing. Cheers!

  5. You actually make it seem so easy with your presentation but I find this topic to be really something that I think I would never understand. It seems too complex and very broad for me. I am looking forward for your next post, I?ll try to get the hang of it!