一、編程范式
- Swift可以面向協(xié)議編程、面向函數(shù)編程摄凡、面向?qū)ο缶幊獭?/li>
- OC主要是面向?qū)ο缶幊獭?/li>
二窥浪、類型安全
- Swift是一個類型安全的語言。例如定義一個NSString啤斗,不能傳遞給其int。
- OC則不盡然。
三紊册、值類型增強
- 在Swift中,典型的有struct快耿、enum以及tuple都是值類型囊陡。平常使用的int、double掀亥、float撞反、string、array搪花、dictionary遏片、set也都是結(jié)構(gòu)體實現(xiàn)的,所以也是值類型撮竿。
- 而OC中NSString吮便、NSNumber以及集合對象都是指針類型的。
四幢踏、枚舉增強
- Swift中的枚舉髓需,支持整形、浮點型惑折、字符等授账,而且還能有自己的屬性和方法,甚至支持協(xié)議惨驶、擴展白热、泛型等。
- 而OC中的枚舉只是一個標記值而已粗卜。
五屋确、泛型
- Swift支持泛型。
六、協(xié)議和擴展
- Swift對協(xié)議的支持更加豐富攻臀,配合擴展(extension)焕数、泛型、關(guān)聯(lián)類型等可以實現(xiàn)面向協(xié)議的編程刨啸。
- OC的協(xié)議缺乏約束堡赔,而且optional會出現(xiàn)很多問題。
七设联、函數(shù)和閉包
- Swift中函數(shù)是一等公民善已,可以直接定義函數(shù)類型的變量、將函數(shù)作為參數(shù)傳遞离例、將函數(shù)作為返回值返回换团。
- OC中函數(shù)是次等公民,需要block或者selector