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類似效果。