Swift中的访问权限
swift中的访问控制模型基于模块和源文件两个概念。
- 模块指的是独立的代码单元,也就是使用
import关键字导入的内容 - 源文件指的是swift中的源码,同一个源文件可以包含多个类型、函数
访问级别
swift中的访问级别有5种。
open和public
open和public级别可以让实体被同一模块源文件中的所有实体访问,在模块外可以通过import导入来访问。如Xcode中的每个target就是独立的模块,需要使用import导入使用。
-
open为限制最少的最高访问级别 -
open只能作用于类和类的成员它和public区别如下:public或者其他更严格访问级别的类,只能在其定义的模块内部被继承public或者其他更严访问级别的类成员,只能在其定义的模块内部的子类中重写open的类可以在其定义的模块中被继承,也可以在引用它的模块中被继承open的类成员可以在其定义的模块子类中重写,也可以在引用它的模块中的子类重写
Copy
public class SomePublicClass {} public var somePublicVariable = 0
internal
internal级别让实体被同一模块源文件中的任何实体访问,但是不能被模块外的实体访问。大多数情况下默认为internal级别。
通常在设计接口时,如果只在应用程序或者框架内使用的使用可以定义为internal级别
File-private
限制实体只能在其定义的文件内部访问。 通常用来隐藏文件内部实现细节
Private
private为限制最多的最低访问级别,限制实体只能在定义的作用域内以及同一文件内的extension访问。