Swift - 協(xié)議
1.既可以定義屬性,也可以定義方法
2.屬性和方法,在protocol中都不能有默認(rèn)實(shí)現(xiàn)
3.定義屬性時(shí)必須指定屬性時(shí)可讀寫/可讀/可寫 {get set}
4.默認(rèn)情況下,被遵守協(xié)議的類/結(jié)構(gòu)體等必須實(shí)現(xiàn),如果只希望協(xié)議被類遵守,可以在協(xié)議名字后面加 :class
3.如果希望協(xié)議中的方法或者屬性時(shí)可選,首先在protocol前加@objc 在可選的方法或?qū)傩郧凹覢objc
4.協(xié)議的默認(rèn)實(shí)現(xiàn)必須在協(xié)議的extension中提供默認(rèn)實(shí)現(xiàn)
5.協(xié)議/結(jié)構(gòu)體中類方法使用static關(guān)鍵字
6.只有協(xié)議中允許使用Self
7.where 限制協(xié)議遵守的類型**
8.associatedtype關(guān)鍵字來聲明一個類型的占位符作為協(xié)議定義的一部分
Swift - 訪問控制
訪問權(quán)限 open > public > interal > fileprivate > private
private
訪問級別所修飾的屬性或者方法只能在當(dāng)前類里訪問
fileprivate
訪問級別所修飾的屬性或者方法在當(dāng)前的swift源文件里可以訪問
internal默認(rèn)訪問級別
訪問級別所修飾的屬性或者方法在源代碼所在的整個模塊都可以訪問,如果是框架或者庫代碼,則在整個框架內(nèi)部都可以訪問,框架外部代碼所引用是,則不可以訪問。
public
可以被任何人訪問,但其他module中不可以被override和繼承,而在module內(nèi)可以被override和繼承
open
可以被任何人使用,包括override和繼承
獨(dú)立思考,不屈從世界,安靜內(nèi)心,瘋子一樣行動,不理會周遭的嘈雜,有節(jié)奏的行走在coding~