Swfit 3.0新增了两个访问修饰符分别是open、fileprivate,对之前的private和public进行了细分。因为swfit的访问控制是基于文件的,但是我们在实际开发中,需要更清晰的知道我在类和文件中的权限。至此swfit中的访问权限控制修饰符一共五个了,按照访问权限一次为:open、public、internal、fileprivate、private。
private:访问权限最低,仅限于在自己的类中访问。
fileprivate:修饰的属性或方法可以在当前swift源文件里访问
例如:在一个类的extension下去访问这个类的变量,如果使用private,该变量就只在类中可以访问,则在extension下是无法访问。所以这时候我们就需要使用fileprivate,使得他的权限在源文件下可以访问。
Internal:这个是我们的默认访问权限,它修饰的属性和方法在所在的这个模块都可以访问。模块的意思就是,比如这是个框架或者库,就只在这个库中有访问权限,或者说是app内有可以访问。其他库或者地方引用这个模块则无法访问。
public:它修饰的属性和方法可以在自己模块和其他引用该模块的模块访问,但是其他模块引用它,不能重写或者继承它。
open:它修饰的访问权限最大,可以被任何人使用,包括重写和继承。
例如:使用internal修饰的方法a, a属于A,B import A,A可以访问a,B不可以。使用public和open修饰a,则A、B都可以访问,但是使用public的时候不能重写和继承。