一,區(qū)別
1,最明顯的區(qū)別:OC一個(gè)類由.h和.m兩個(gè)文件組成,而swift只有.swift一個(gè)文件,所以整體的文件數(shù)量比OC有一定減少。
2,不像C語言和OC語言一樣都必須有一個(gè)主函數(shù)main()作為程序的入口,swift程序從第一句開始向下順序執(zhí)行,一直到最后。
OC的main函數(shù):
?int main(int argh, char * argh[]) {
?@autoreasepool {
? ?return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
? ?}
?}
3,swift數(shù)據(jù)類型都會(huì)自動(dòng)判斷,只區(qū)分變量var和常量let。
4,關(guān)于BOOL類型更加嚴(yán)格,swift不再是OC的非0就是真,而是true才是真false才是假。
5,swift的switch語句后面可以跟各種數(shù)據(jù)類型了,如Int,字符串,元組,區(qū)間都行,并且里面不用寫break。
6,swift 中可以定義不繼承于其它類的類,稱之為基類(base calss)。
7,final關(guān)鍵字
使用final關(guān)鍵修飾的類,不能被其他類繼承。
繼承final修飾的類會(huì)報(bào)錯(cuò):Inheritance from a final class '…..'
8,類方法修飾符:static
9,guard關(guān)鍵詞
注意事項(xiàng):
1.guard關(guān)鍵字必須使用在函數(shù)中。
2.guard關(guān)鍵字必須和else同時(shí)出現(xiàn)。
3.guard關(guān)鍵字只有條件為false的時(shí)候才能走else語句 相反執(zhí)行后邊語句。
用處:
判斷某個(gè)參數(shù)是否符合要求,不符合直接返回。省去過多的if-else語句。
10,in out關(guān)鍵詞
in-out是修飾函數(shù)參數(shù)類型,表示該參數(shù)在函數(shù)內(nèi)修改后(即函數(shù)返回后),其值為修改后的值.
1,適用類型為變量
2,in-out修飾后的參數(shù),在傳參時(shí)需&修飾
二,Swift比Objective-C優(yōu)勢(shì):
1,Swift容易閱讀,語法和文件結(jié)構(gòu)簡(jiǎn)易化。
?2,Swift更易于維護(hù),文件分離后結(jié)構(gòu)更清晰。
?3,Swift更加安全,它是類型安全的語言:
??????Swift 是一個(gè)類型安全(type safe)的語言。類型安全的語言可以讓你清楚地知道代碼要處理的值的類型。如果你的代碼需要一個(gè) String ,你絕對(duì)不可能不小心傳進(jìn)去一個(gè) Int 。
由于 Swift 是類型安全的,所以它會(huì)在編譯你的代碼時(shí)進(jìn)行類型檢查(type checks),并把不匹配的類型標(biāo)記 為錯(cuò)誤。這可以讓你在開發(fā)的時(shí)候盡早發(fā)現(xiàn)并修復(fù)錯(cuò)誤。
當(dāng)你要處理不同類型的值時(shí),類型檢查可以幫你避免錯(cuò)誤。然而,這并不是說你每次聲明常量和變量的時(shí)候都需 要顯式指定類型。如果你沒有顯式指定類型,Swift 會(huì)使用類型推斷(type inference)來選擇合適的類型。有了類型推斷,編譯器可以在編譯代碼的時(shí)候自動(dòng)推斷出表達(dá)式的類型。原理很簡(jiǎn)單,只要檢查你賦的值即可。
因?yàn)橛蓄愋屯茢啵?C 或者 Objective-C 比起來 Swift 很少需要聲明類型。常量和變量雖然需要明確類型,但 是大部分工作并不需要你自己來完成。
4,Swift代碼更少,簡(jiǎn)潔的語法,可以省去大量冗余代碼。
5,Swift速度更快,運(yùn)算性能更高。
三、Swift目前存在的缺點(diǎn):
?1、版本不穩(wěn)定,之前升級(jí)Swift3大動(dòng)刀,苦了好多人,swift4目前還未知。
?2、使用人數(shù)比例偏低,目前還是OC的天下
?3、社區(qū)的開源項(xiàng)目偏少,畢竟OC獨(dú)大好多年,很多優(yōu)秀的類庫(kù)都不支持Swift,不過這種狀況正在改變,現(xiàn)在有好多優(yōu)秀的Swift的開源類庫(kù)了。
?4、公司使用的比例不高,很多公司以穩(wěn)為主,還是在使用OC開發(fā),很少一些在進(jìn)行混合開發(fā),更少一些是純Swift開發(fā)。
5、偶爾開發(fā)中遇到的一些問題,很難查找到相關(guān)資料,這是一個(gè)弊端。
?6、純Swift的運(yùn)行時(shí)和OC有本質(zhì)區(qū)別,一些OC中運(yùn)行時(shí)的強(qiáng)大功能,在純Swift中變無效了。
?7、對(duì)于不支持Swift的一些第三方類庫(kù),如果非得使用,只能混合編程,利用橋接文件實(shí)現(xiàn)。
原始鏈接:http://www.lxweimin.com/p/ab543aaecf50