寫在前面
以前做iOS的項(xiàng)目一直使用OC開發(fā)倔监,最近做項(xiàng)目時使用了Swift。但是被別人問及
- 為什么使用Swift做項(xiàng)目菌仁?
- Swift與OC相比有什么區(qū)別浩习?或者有什么優(yōu)勢?
...
我先是一臉懵逼济丘,因?yàn)樽约捍_實(shí)沒有細(xì)細(xì)比較過Swift與OC的區(qū)別谱秽,或者Swift語言到底有什么優(yōu)勢。靜下心來想想摹迷,自己使用Swift開發(fā)項(xiàng)目的最初原因疟赊,無非是想證明自己已經(jīng)掌握了一門新的開發(fā)語言,而且峡碉,這門語言已經(jīng)很成熟近哟。
真要說說Swift與OC的區(qū)別,那就先從語法開始總結(jié)吧异赫!
Swift與OC語法上的區(qū)別
常量和變量
- Swift常量使用let聲明椅挣;變量使用var聲明
- Swift對常量和變量有類型推斷的機(jī)制
- Swift對變量新增了可選類型,可選即表示這個變量要么有值塔拳,要么為nil
函數(shù)
- Swift一行代碼不用寫分號
- Swift的返回值可以使用元組返回多個值
- Swift的函數(shù)參數(shù)可以設(shè)置缺省值
- Swift的函數(shù)參數(shù)有內(nèi)外標(biāo)簽
- Swift的函數(shù)可以嵌套函數(shù)
- Swift子類覆蓋父類的方法必須使用關(guān)鍵字override
關(guān)鍵字鼠证、保留字、數(shù)據(jù)類型
- nil:OC中nil只能修飾NSObject及其子類對象靠抑,表示OC對象指針為空量九;Swift中nil可以修飾所有類型,包括基礎(chǔ)數(shù)據(jù)類型颂碧,表示值缺失
- switch:1. Swift中switch語句的值可以是字符串等值 2.Swift中switch不用break荠列,如果想實(shí)現(xiàn)幾個值貫穿可以使用關(guān)鍵字fallthrough
- 數(shù)組:Swift的數(shù)據(jù)可以存儲基礎(chǔ)類型數(shù)據(jù);NSArray只能使用NSNumber存儲基礎(chǔ)數(shù)據(jù)類型數(shù)據(jù)
- 布爾類型:Swift的Bool類型true才為真载城;OC里BOOL類型非0即為真
- 取余:Swift可以對浮點(diǎn)型數(shù)據(jù)取余(Swift3.0后使用函數(shù)對浮點(diǎn)型數(shù)據(jù)取余肌似;%與OC中保持一致)
- Swift中對變量取別名使用typealias;OC中使用typedef
Swift新增關(guān)鍵字诉瓦、運(yùn)算符
- 范圍運(yùn)算符:
a...b表示[a, b]川队,及a<= value <=b
a..<b表示[a, b),及a<= value <b - 元組
現(xiàn)在先總結(jié)這么多,后續(xù)更新睬澡。如果有什么遺漏的語法不同點(diǎn)固额,歡迎大家提出~