1潦俺、extension [?k'st?n??n] ——擴展
可以將某一類相關(guān)的代碼寫在一起,體現(xiàn)Swift語言特點 -- 優(yōu)雅徐勃。
注意:在擴展中事示,不能包含存儲屬性。
extension 和 oc 中的分類非常類似僻肖。不過可以將某一個協(xié)議定義的方法單獨抽取出來肖爵,** 不過 **,extension 中同樣不能定義變量
2臀脏、關(guān)鍵字static和class的區(qū)別:
class關(guān)鍵字除了有自定義類的作用, 還有聲明類方法的作用.
在方法的func關(guān)鍵字之前加上關(guān)鍵字static或者class都可以用于指定類方法.
不同的是用class關(guān)鍵字指定的類方法可以被子類重寫, 如下:
override class func work() {
print("Teacher: University Teacher")
}
但是用static關(guān)鍵字指定的類方法是不能被子類重寫的, 根據(jù)報錯信息: Class method overrides a 'final' class method.
我們可以知道被static指定的類方法包含final關(guān)鍵字的特性--防止被重寫.
3劝堪、@escaping [i'skeip] 溢出的
4、在Swift語言中揉稚,訪問修飾符有五種幅聘,分別為fileprivate,private窃植,internal帝蒿,public和open。
其中 fileprivate和open是Swift 3新添加的巷怜。由于過去 Swift對于訪問權(quán)限的控制葛超,不是基于類的,而是基于文件的延塑。這樣會有問題绣张,所以Swift 3新增了兩個修飾符對原來的private、public進行細分关带。
一侥涵、各個修飾符區(qū)別
1沼撕,private
private訪問級別所修飾的屬性或者方法只能在當前類里訪問。
2芜飘,fileprivate
fileprivate訪問級別所修飾的屬性或者方法在當前的Swift源文件里可以訪問务豺。(比如上門樣例把private改成fileprivate就不會報錯了)
3,internal(默認訪問級別嗦明,internal修飾符可寫可不寫)
internal訪問級別所修飾的屬性或方法在源代碼所在的整個模塊都可以訪問笼沥。
如果是框架或者庫代碼,則在整個框架內(nèi)部都可以訪問娶牌,框架由外部代碼所引用時奔浅,則不可以訪問。
如果是App代碼诗良,也是在整個App代碼汹桦,也是在整個App內(nèi)部可以訪問。
4鉴裹,public
可以被任何人訪問舞骆。但其他module中不可以被override和繼承,而在module內(nèi)可以被override和繼承壹罚。
5葛作,open
可以被任何人使用寿羞,包括override和繼承猖凛。
二、5種修飾符訪問權(quán)限排序
從高到低排序如下:
open > public > interal > fileprivate > private