Swift中各個(gè)關(guān)鍵字的代表含義(持續(xù)更新)

1.override

重寫定義的前面加上 ''override'' 關(guān)鍵字,子類可以為繼承來(lái)的實(shí)例方法,類方法,實(shí)例屬性,類屬性,或下標(biāo)提供自己定制的實(shí)現(xiàn)。我們把這種行為叫重寫。

2.final

防止它們被重寫

說(shuō)明:final 關(guān)鍵字可以用在 class , func 或者 var 前面進(jìn)行修飾,表示不允許對(duì)該內(nèi)容進(jìn)行繼承或 者重寫操作。

3.inout

輸入輸出參數(shù)

4.mutating

使用 mutating 關(guān)鍵字修飾方法是為了能在該方法中修改 struct 或是 enum 的變量

5. !

1.'!' 強(qiáng)制解包 一定要獲取一個(gè)值 不能夠?yàn)閚il。
2.'!' 強(qiáng)制解包有風(fēng)險(xiǎn),需要謹(jǐn)慎使用,程序員需要對(duì)'!'負(fù)責(zé) 如果為nil 程序會(huì)崩潰,一定要考慮是否安全 一定有值 防患于未然。

6. ?

'?' 可選解包 后面具體說(shuō),如果可選類型要進(jìn)行計(jì)算的時(shí)候,系統(tǒng)會(huì)報(bào)錯(cuò),需要程序員手動(dòng)處理可選類型。

7.??

'??' 合并空選項(xiàng) 必須提高 ?? 的優(yōu)先級(jí)

8.convenience

構(gòu)造遍歷器關(guān)鍵字

9.required

必須實(shí)現(xiàn)

10. deinit

deinit:析構(gòu)函數(shù)(destructor) 與構(gòu)造函數(shù)相反,當(dāng)對(duì)象結(jié)束其生命周期時(shí)(例如對(duì)象所在的函數(shù)已調(diào)用完畢),系統(tǒng)自動(dòng)執(zhí)行析構(gòu)函數(shù)。
注釋和OC中的dealloc 一樣的,通常在deinit和dealloc中需要執(zhí)行的操作有:對(duì)象銷毀、KVO移除、移除通知、NSTimer銷毀。

11.is 類型檢查操作符

is 來(lái)檢查一個(gè)實(shí)例是否屬于一個(gè)特定的子類。如果實(shí)例是該子類類型,類型檢查操作符返回true,否則返回false。

12.as?

條件形式的類型轉(zhuǎn)換操作符,作用:返回一個(gè)你將要向下類型轉(zhuǎn)換值的可選項(xiàng)。

13.as!

強(qiáng)制形式類型轉(zhuǎn)換操作符,作用:向下類型轉(zhuǎn)換和強(qiáng)制展開結(jié)合為一個(gè)步驟。

14.AnyObject

注釋:可以表示任何類型的實(shí)例

15.Any

注釋:可以表示任何類型,包括函數(shù)類型。

16.extension

注釋:
一、基本解釋
1.擴(kuò)展為現(xiàn)有的類、結(jié)構(gòu)體、枚舉類型、或協(xié)議添加了新功能。也就是所謂的逆向建模,包括可以對(duì)無(wú)權(quán)限的源碼進(jìn)行擴(kuò)展類型的能力。
2.extension與oc中的category類似。不同之處就是沒有擴(kuò)展名字。
二、功能和用途
1.添加計(jì)算實(shí)例屬性和計(jì)算類型屬性。
2.定義實(shí)例方法和類型方法。
3.提供新初始化器。
4.定義和使用新內(nèi)嵌類型。
5.使現(xiàn)有的類型遵循某協(xié)議。
三、注意事項(xiàng)
擴(kuò)展可以向一個(gè)類型添加新的方法,但是不能重寫已有的方法。

17.optional

可選要求使用 optional 修飾符作為前綴放在協(xié)議的定義中

18.@objc

可選允許你的代碼與 oc進(jìn)行通信操作。 協(xié)議可選要求必須使用 @objc 標(biāo)志標(biāo)記。注意 @objc 協(xié)議只能被繼承自 oc 類或 其他 @objc 類采納。它們不能被結(jié)構(gòu)體或者枚舉采納。

19._

當(dāng)我們覺著某些參數(shù)可以選擇性的忽略,就可以使用_代替要忽略的那個(gè)值。

20.associatedtype

關(guān)聯(lián)類型通過該關(guān)鍵字來(lái)指定。定義一個(gè)協(xié)議時(shí),有時(shí)在協(xié)議里聲明一個(gè)或多個(gè)關(guān)聯(lián)類型是很有用的。關(guān)聯(lián)類型給協(xié)議中用到的類型一個(gè)占位符名稱。直到代表的實(shí)際類型在協(xié)議被采納時(shí)才會(huì)被指定。

21. typealias

用來(lái)為已經(jīng)存在的類型重新定義名字的,與oc中的typedef有點(diǎn)類似。

22. throws

拋出錯(cuò)誤

23. import

一個(gè)模塊可以使用 import 關(guān)鍵字導(dǎo)入另外一個(gè)模塊

24. open

公開權(quán)限, 最高的權(quán)限, 可以被其他模塊訪問, 繼承及復(fù)寫。只能用于類和類的成員。

25. public

公有訪問權(quán)限,類或者類的公有屬性或者公有方法可以從文件或者模塊的任何地方進(jìn)行訪問。public 的權(quán)限在 Swift 3.0 后無(wú)法在其他模 塊被復(fù)寫方法/屬性或被繼承。

26. internal

internal 是內(nèi)部的意思,即有著 internal 訪問權(quán)限的屬性和方法說(shuō)明在模塊內(nèi)部可以訪問, 超出模塊內(nèi)部就不可被訪問了。在 Swift 中默認(rèn)就是 internal 的訪問權(quán)限。

27. fileprivate

文件私有訪問權(quán)限,被該關(guān)鍵字修改的屬性或者方法可以在同一個(gè)物理文件中訪問。超出該物理文件,屬性和方法就不能直接被訪問。

28.private

私有訪問權(quán)限,修飾后的類、屬性、方法可以在同一個(gè)物理文件中的同一個(gè)類型(包含 extension)訪問。如果超出該物理文件或不屬于同一類型,就不能被訪問。

29. @discardableResult(字面意思就是”可以忽略“)

1.swift正常的方法如果有返回值的話,調(diào)用的時(shí)候必須有一個(gè)接收方,否則的話編譯器會(huì)報(bào)如下警告。
2.如果在方法前加上 @discardableResult 不處理的時(shí)候就不會(huì)有警告了。也可以用一個(gè)通配符_接收方法返回值,可以達(dá)到同樣的目的。

Snip20200306_1.png

30.

注意事項(xiàng):

1.如果一個(gè)類的訪問級(jí)別是fileprivate或者private那么該類的所有成員都是fileprivate或者private的訪問權(quán)限。(此時(shí)成員無(wú)法修改訪問級(jí)別)。
2.如果一個(gè)類的訪問級(jí)別是open、internal或者 public那么它的所有成員都是internal,類成員的訪問級(jí)別不能高于類的訪問級(jí)別。(注意:嵌套類型的訪問級(jí)別也符合這個(gè)規(guī)則。)
3.常量、變量、屬性、下標(biāo)腳本訪問級(jí)別低于聲明的類型級(jí)別,并且如果不是默認(rèn)訪問級(jí)別(internal)要明確聲明訪問級(jí)別。例如:一個(gè)常量是private,那么該常量必須聲明為private 或 fileprivate類型。
4.在不違背1、2、3潛規(guī)則的情況下,setter 訪問級(jí)別可以低于getter級(jí)別。(例如:假如一個(gè)屬性訪問級(jí)別是internal,那么可以添加private(set)修飾將setter權(quán)限設(shè)置為private,在當(dāng)前模塊中只有此源文件可以訪問,對(duì)外部都是只讀的。)
5.必要構(gòu)造方法(required 修飾)的訪問級(jí)別必須和訪問級(jí)別相同,結(jié)構(gòu)體的默認(rèn)逐一構(gòu)造函數(shù)的訪問級(jí)別不高于其成員的訪問級(jí)別。例如一個(gè)成員是 private 那么這個(gè)構(gòu)造函數(shù)就是 private,但是可以通過自定義來(lái)聲明一個(gè) public 的構(gòu)造函數(shù)。

31.@noreturn

表示調(diào)用這個(gè)方法的話可以不再需要返回值,因?yàn)?程序整個(gè)都將終止。

32.@noescape

noescape是非逃逸的意思。@noescape關(guān)鍵字代碼中扮演了一個(gè)標(biāo)注的作用:來(lái)說(shuō)明一個(gè)閉包參數(shù),該閉包參數(shù)與此API是同步的,它只在此API中被調(diào)用。只要該API運(yùn)行結(jié)束,該閉包的生命周期就結(jié)束。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容