在 Swift 語言中,訪問修飾符有五種,分別爲 private,fileprivate,internal,public 和 open。
其中 fileprivate 和 open 是 Swift 3 新添加的。由於過去 Swift 對於訪問權限的控制,不是基於類的,而是基於文件的。這樣會有問題,所以 Swift 3 新增了兩個修飾符對原來的 private、public 進行細分。
下面分別說說各種修飾符的範圍&區別:
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