一、基礎(chǔ)部分
1>常量、變量聲明
常量:let propertyName : type = value ? 變量:var ?propertyName : type = value
2>數(shù)據(jù)類型
基本數(shù)據(jù)類型:
整型(Int)咪橙、浮點型(Double、Float)秩铆、字符串類型(String)竖席、Bool型(true、false)
集合類型:
數(shù)組(Array)油昂、字典(Dictionary)革娄、集合(Set)
3>控制流
循環(huán)語句:for-in 循環(huán)、while 循環(huán)
條件語句:if-else語句冕碟、switch-case語句拦惋、guard語句
控制轉(zhuǎn)移語句:continue、fallthrough鸣哀、return架忌、throw
4>函數(shù)
func ? functionName(參數(shù)標(biāo)簽,參數(shù)1:類型...)->返回值類型{}
5>閉包
{(parameters)->returnType in ?
statements
}
尾隨閉包:
func someFunctionThatTakesAClosure(closure: () -> Void) {
// 函數(shù)體部分
}
// 以下是不使用尾隨閉包進(jìn)行函數(shù)調(diào)用
someFunctionThatTakesAClosure(closure: {
// 閉包主體部分
})
// 以下是使用尾隨閉包進(jìn)行函數(shù)調(diào)用
someFunctionThatTakesAClosure() {
// 閉包主體部分
}
實例:
let strings = numbers.map {
(number) -> String in
var number = number
var output = ""
repeat {
output = digitNames[number % 10]! + output
number /= 10
} while number > 0
return output
}
6>枚舉
enum ?someEnumeration{
case xxx
case xxxx
....
}
7>類和結(jié)構(gòu)體
class someClass{statement}
struct someStruct{statement}
類和結(jié)構(gòu)體的對比
共同之處:
定義屬性用于存儲值
定義方法用于提供功能
定義下標(biāo)操作使得可以通過下標(biāo)語法來訪問實例所包含的值
定義構(gòu)造器用于生成初始化值
通過擴(kuò)展以增加默認(rèn)實現(xiàn)的功能
實現(xiàn)協(xié)議以提供某種標(biāo)準(zhǔn)功能
與結(jié)構(gòu)體相比,類還有如下的附加功能:
繼承允許一個類繼承另一個類的特征
類型轉(zhuǎn)換允許在運行時檢查和解釋一個類實例的類型
析構(gòu)器允許一個類實例釋放任何其所被分配的資源
引用計數(shù)允許對一個類的多次引用
8>構(gòu)造器
init(){}
自定義構(gòu)造器
自定義構(gòu)造過程時我衬,可以在定義中提供構(gòu)造參數(shù)叹放,指定所需值的類型和名字。構(gòu)造參數(shù)的功能和語法跟函數(shù)和方法的參數(shù)相同挠羔。
默認(rèn)構(gòu)造器
如果結(jié)構(gòu)體或類的所有屬性都有默認(rèn)值井仰,同時沒有自定義的構(gòu)造器,那么 Swift 會給這些結(jié)構(gòu)體或類提供一個默認(rèn)構(gòu)造器(default initializers)破加。這個默認(rèn)構(gòu)造器將簡單地創(chuàng)建一個所有屬性值都設(shè)置為默認(rèn)值的實例俱恶。
9>析構(gòu)器
deinit{}
每個類最多只能有一個析構(gòu)器,而且析構(gòu)器不帶任何參數(shù)范舀。析構(gòu)器是在實例釋放發(fā)生前被自動調(diào)用合是。你不能主動調(diào)用析構(gòu)器。
10>擴(kuò)展
Swift 中的擴(kuò)展可以:
添加計算型屬性和計算型類型屬性
定義實例方法和類型方法
提供新的構(gòu)造器
定義下標(biāo)
定義和使用新的嵌套類型
使一個已有類型符合某個協(xié)議
extension someType{}
11>協(xié)議
協(xié)議 定義了一個藍(lán)圖锭环,規(guī)定了用來實現(xiàn)某一特定任務(wù)或者功能的方法聪全、屬性,以及其他需要的東西辅辩。類难礼、結(jié)構(gòu)體或枚舉都可以遵循協(xié)議,并為協(xié)議定義的這些要求提供具體實現(xiàn)玫锋。某個類型能夠滿足某個協(xié)議的要求蛾茉,就可以說該類型遵循這個協(xié)議。
protocol someProtocol{statement}
12>委托(代理)模式
委托是一種設(shè)計模式撩鹿,它允許類或結(jié)構(gòu)體將一些需要它們負(fù)責(zé)的功能委托給其他類型的實例谦炬。委托模式的實現(xiàn)很簡單:定義協(xié)議來封裝那些需要被委托的功能,這樣就能確保遵循協(xié)議的類型能提供這些功能节沦。委托模式可以用來響應(yīng)特定的動作吧寺,或者接收外部數(shù)據(jù)源提供的數(shù)據(jù)窜管,而無需關(guān)心外部數(shù)據(jù)源的類型。
13>泛型函數(shù)
泛型函數(shù)可以適用于任何類型
實例:
fun swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}