模組 Module
模組 是代碼分布的單一單元。比如一個被作為一個單位編譯和發(fā)布哨颂,別且可以被其它模組用import
導入的框架或應用。
Xcode中的每個編譯目標(build target)比如app bundle或者framework在Swift中都是被作為單獨的模組相种。
源文件source file 是模組中的單獨Swift源代碼文件也就是應用或者框架的一個文件.
訪問等級 Access Levels
Swift 提供了五種不同的訪問等級威恼。
- Open 和 Pubilc 訪問等級可以在模組中的任何源文件內訪問,也可以在其它導入該模組的源文件中被訪問寝并。一般在設定框架的接口的時候用這兩個屬性箫措。
- Internal 訪問等級可以在所定義的模組中任何源文件內訪問。一般在定義框架或者應用的內部結構時使用衬潦。
- File-private訪問等級只能在該文件內訪問斤蔓。一般在整個都用的地方定義。對外部來說具體實現是隱藏的镀岛。
- Private 訪問等級限制了實例在封閉的聲明中弦牡,即使是同一個文件的擴展也不能訪問。一般在用在那些僅在當前的聲明中使用的代碼部分漂羊。
Open訪問等級僅用在類和類成員驾锰,與Public的區(qū)別如下。
- Public (或者比Public限制等級更高的訪問等級)定義的類拨与,僅可在他們被定義的模組中定義子類稻据。
- Public(或者比Public限制等級更高的訪問等級) 定義的類成員,僅可在他們被定義的模組中被他們的子類重寫买喧。
- Open 定義的類可以在他們被定義的模組和其它導入他們的模組中定義子類捻悯。
- Open 定義的類成員可以在他們被定義的模組和其它導入他們的模組中重寫。
把類標記為Open就意味著已經需要考慮好了外部模組將它作為基類的影響淤毛。
簡而言之今缚,Open定義的類可以在導入它的模組中重寫定義子類,類成員可以重寫低淡。 而Public和其它級別都是不可以姓言。
選擇
在被導入的時候支持重寫 -> Open
在被導入的文件可以訪問 -> Public
在自己的模組中支持所有文件訪問 -> Internal
在自己所在文件中可以訪問 -> Fileprivate
在自己所定義的部分可以訪問(擴展都不可以訪問)-> Private