访问控制权限 open public internal fileprivate private swift
Swift 提供了五种不同的访问级别,分别是:open
、public
、internal
、fileprivate
和 private
,访问权限依次由高到低。
-
open
: 可以在定义的模块中使用,也可在其他的模块中使用,(模块相当项目的target)其他模块也可继承、重写。open
只能用在类、类成员上。打包静态库给其他项目使用时就需使用open
修饰 -
public
:可以在定义的模块中使用,也可在其他的模块中使用,但是其他模块不能继承、重写。 -
internal
: 只允许在定义的模块中访问, 不允许在其他模块中方法。通常用来隐藏文件内部实现细节。 -
fileprivate
: 只允许在定义的源文件中访问(只能在.swift文件中使用) -
private
: 只允许在定义的封闭声明中访问(例如:类中、一个函数的作用域内)
注意:不加任何修饰时默认是internal
。通常在设计接口时,如果只在应用程序或者框架内使用可以定义为internal
级别。
模块:单一的代码分配单元。指的是Framework
或App bundle
。在 Swift 中,可以用import
关键字引入自己的工程。
源文件:一个模块中的单个 Swift 源代码文件(指的是 Swift 中的Swift File
,就是编写 Swift 代码的文件)。
默认级别
-
若无显式声明,代码中所有实体的访问级别默认为
internal
。 -
如果定义一个
public
或internal
类型,其成员的访问级别默认为internal
; -
如果定义一个
fileprivate
或private
类型,其成员的访问级别默认为fileprivate
或private
。
在北京的灯中,有一盏是我家的。这个梦何时可以实现?哪怕微微亮。北京就像魔鬼训练营,有能力的留,没能力的走……