在 Swift 語言中,訪問修飾符有五種咐汞,分別為 private,fileprivate儒鹿,internal化撕,public 和 open。
其中 fileprivate 和 open 是 Swift 3 新添加的约炎。由于過去 Swift 對于訪問權限的控制植阴,不是基于類的,而是基于文件的圾浅。這樣會有問題掠手,所以 Swift 3 新增了兩個修飾符對原來的 private、public 進行細分贱傀。
下面分別說說各種修飾符的范圍&區(qū)別:
private(Class級別)
private 訪問級別所修飾的 屬性 或者 方法 只能在 當前類 里訪問惨撇。
注意:Swift4 中,extension 里也可以訪問 private 的屬性府寒。fileprivate(File級別)
fileprivate 訪問級別所修飾的 屬性 或者 方法 在 當前的 Swift 源文件 里可以訪問。-
internal(Module級別报腔,Default株搔,internal修飾符可寫可不寫)
- internal 訪問級別所修飾的 屬性 或 方法 在源代碼所在的 整個模塊 都可以訪問。
- 如果是框架或者庫代碼纯蛾,則在整個 框架內部 都可以訪問纤房,框架由外部代碼所引用時,則不可以訪問翻诉。
- 如果是 App 代碼炮姨,也是在 整個 App 代碼,也是在 整個 App 內部 可以訪問碰煌。
public(開放級別舒岸,但是有些限制)
可以被 任何人 訪問。
但芦圾,其他 module 中不可以被 override & 繼承 蛾派,而在 module 內可以被 override & 繼承 。open(開放級別,無限制)
可以被 任何人 使用洪乍,包括 override & 繼承 眯杏。
總結,5種修飾符訪問權限排序如下:
open > public > interal > fileprivate > private
喜歡我的可以關注收藏我的個人博客:Ro.bber