1.base class?
? ? Swift中可以定義不繼承于其它類的類擒悬,稱之為基類(base class),而OC的類都是繼承自NSObject。
2.switch
? ? 在OC中的Switch:
? ? ? ? 不能判斷對象類型, 只能判斷基本類型中的整數(shù);可以穿透;default位置可以隨便放。
? ? 在Swift中的Switch:
? ? ? ? 可以判斷對象類型只损,支持對象類型、元組、區(qū)間跃惫、double類型等等;默認(rèn)不穿透艾栋,可以寫fallthough穿透爆存;可以不寫break,如果寫了default蝗砾,default得放在最后先较。
3.final關(guān)鍵字
????Swift中的final修飾符可以防止類被繼承,還可以防止子類重寫父類的屬性悼粮、方法以及下標(biāo)闲勺。
4.guard、inout
? ? Swift中扣猫,guard關(guān)鍵字只能作用在函數(shù)中菜循,guard關(guān)鍵字必須和else同時出現(xiàn),guard關(guān)鍵字只有在條件為false的時候會走else語句申尤,反之執(zhí)行后邊語句癌幕。
? ? Swift中,inout是修飾函數(shù)參數(shù)類型昧穿,表示該參數(shù)在函數(shù)內(nèi)修改后(即函數(shù)返回后)勺远,其值為修改后的值。
5.運算符重載
? ? OC是不支持重載的时鸵,Swift是支持重載的胶逢。
6.命名空間
? ? OC沒有命名空間,但是在為了區(qū)分在不同框架中可能會使用相同名字的變量沖突的情況饰潜,OC使用前綴來區(qū)別初坠。
? ? Swift有命名空間,默認(rèn)就是項目名稱囊拜,同一個命名空間全局共享某筐,這也是Swift不需要在import頭文件。
7.swift類型安全冠跷,oc更靈活
? ??類型安全語言需要代碼里值的類型非常明確南誊。
8.可選類型
? ??Swift引入了可選項類型,用于處理變量值不存在的情況蜜托。Optionals類似于OC中指向nil的指針抄囚,但是適用于所有數(shù)據(jù)類型,而非僅僅局限于類橄务,Optionals相比于OC中的nil指針幔托,更加安全和簡明。
9.字符串插值、String.Index
????OC:[NSStringstringWithFormat:@"%d",10];
????Swift: "\(10)"
10.OC是動態(tài)重挑、Swift是靜態(tài)(函數(shù)內(nèi)聯(lián))
? ??Swift 編譯時就確定了調(diào)用的方法嗓化,OC是調(diào)用之前通過虛函數(shù)表來確定調(diào)用的方法。
11.泛型
? ??泛型是用來使代碼能安全工作谬哀,Swift中的范型可以在函數(shù)數(shù)據(jù)和普通數(shù)據(jù)類型中使用刺覆,例如類、結(jié)構(gòu)體或枚舉史煎。范型可以解決代碼復(fù)用的問題谦屑。
12.訪問權(quán)限
? ??Swift又新增了兩種訪問控制權(quán)限?fileprivate和?open。Swift中訪問權(quán)限由大到小依次為:open > public > internal(默認(rèn))> fileprivate >private篇梭。
? ? ? ? open:可以在任何地方訪問氢橙,包括override和繼承。
????????public:可以在任何地方訪問恬偷,但其他module中不可以被override和繼承悍手,而在本module內(nèi)可以被override和繼承。
????????internal:修飾的屬性或方法在整個模塊內(nèi)都可以訪問,系統(tǒng)默認(rèn)喉磁。
????????fileprivate:在當(dāng)前文件內(nèi)可以被訪問谓苟。
????????private:在當(dāng)前類中能被訪問。??
13.enum
????Swift 的枚舉成員在被創(chuàng)建時本身就是完備的值协怒,這些值的類型是已經(jīng)明確定義好的 Direction 類型. 不會像 Objective-C 一樣被賦予一個默認(rèn)的整型值涝焙。
14.swift 反射機制
????所謂反射就是可以動態(tài)獲取類型、成員信息孕暇,同時在運行時(而非編譯時)可以動態(tài)調(diào)用任意方法仑撞、屬性等行為的特性。反射最重要的目的妖滔,就是為了解耦隧哮。
在Swift中并不提倡使用Runtime,而是像其他語言一樣使用反射(Reflect)座舍。Swift的反射機制是基于一個叫?Mirror?的?struct?來實現(xiàn)的沮翔。
Swift其他功能:
1.范圍運算符:
????a...b 表示 [a,b] 包括a和b 。 (如3...5 ?就是范圍取3曲秉,4采蚀,5)
????a..<b 表示 [a,b) 包括a,不包括b 承二。?(如3..<5 ?就是范圍取3榆鼠,4)
????常見的如for循環(huán):for i in 0...9{}
2.獨有的元組類型
????元組(tuples)把多個值組合成一個復(fù)合值。元組內(nèi)的值可以使任意類型,并不要求是相同類型亥鸠。
? ?eg: var value = (Int,String) = (x:15,y:"abc")? ??
3.swift中使用let定義常量,var定義變量
? ??使用常量妆够,更加安全识啦,不能夠被修改,在需要對對象進行修改的時候只能用var修飾神妹。
4.if let 颓哮、 guard let?
? ??縮減代碼量,安全處理數(shù)據(jù)邏輯鸵荠,作用是解包题翻。
5.defer?
????defer?block 里的代碼會在函數(shù) return 之前執(zhí)行,無論函數(shù)是從哪個分支 return 的腰鬼,還是有 throw,還是自然而然走到最后一行塑荒。? ??
6.高階函數(shù)
? ??高階函數(shù)僅僅只是一個函數(shù)熄赡,其可以接收函數(shù)作為參數(shù),或者返回一個函數(shù)來操作其他函數(shù)齿税。Swift的集合類型中就有這些高階函數(shù):Map, FlatMap, Filter, 和Reduce彼硫。
Swift優(yōu)點:
1.Swift容易閱讀,語法和文件結(jié)構(gòu)簡易化凌箕。
2.Swift更易于維護拧篮,文件分離后結(jié)構(gòu)更清晰。
3.Swift更加安全牵舱,它是類型安全的語言串绩。
4.Swift代碼更少,簡潔的語法芜壁,可以省去大量冗余代碼礁凡。
5.Swift速度更快,運算性能更高慧妄。