天天看點

swift跟oc的差別

1.Swift可以面向協定程式設計、函數式程式設計、面向對象程式設計。

2.Swift是類型安全的,代碼中使用字元串String,就不能傳遞一個整型Int給它。編譯時會做類型檢查,不比對的類型會錯誤标記出來。

3.典型的struct enum tuple都是值類型,Int,Double,Float,String,Array,Dictionary,Set都是用結構體實作的,也是值類型。

4.Swift的枚舉可以使用整型 浮點型 字元串等,還有擁有屬性和方法,甚至支援泛型,協定,擴充等

5.Swift支援泛型,支援泛型類型限制。

6.Swift對協定支援更豐富,可以實作面向協定程式設計。

7.Swift可以直接定義函數類型變量,可以作為其他函數參數傳遞,可以作為函數傳回值傳回。(這一點跟js的閉包很像)

1.Objective-C以面向對象程式設計為主,當然你可以引入類似ReactiveCocoa的類庫來進行函數式程式設計。

2.OC則不是,你聲明一個NSString變量,仍然可以傳遞一個NSNumber給他,編譯期間隻會警告,不會報錯。

3.OC裡面NSNumber,NSString以及集合類對象都是指針類型。

4.OC的枚舉隻是個标記值。

5.OC在swift2之後加入Generics泛型支援,不過泛型限制停留在編譯器警告階段。

6.OC的協定缺乏強限制,提供optional特性往往成為很多問題的來源。

7.OC需要用selector或block才能模拟Swift類似效果。

swift跟oc的差別