open,public,internal,fileprivate,private。html
其中 fileprivate 和 open 是 Swift 3 新添加的。因为过去 Swift 对于访问权限的控制,不是基于类的,而是基于文件的。这样会有问题,因此 Swift 3 新增了两个修饰符对原来的 private、public 进行细分。框架
private 访问级别所修饰的属性或者方法只能在当前类里访问。 (注意:Swift4 中,extension 里也能够访问 private 的属性。)ide
fileprivate 访问级别所修饰的属性或者方法在当前的 Swift 源文件里能够访问。(好比上面样例把 private 改为 fileprivate 就不会报错了)htm
internal 访问级别所修饰的属性或方法在源代码所在的整个模块均可以访问。blog
若是是框架或者库代码,则在整个框架内部均可以访问,框架由外部代码所引用时,则不能够访问。排序
若是是 App 代码,也是在整个 App 代码,也是在整个 App 内部能够访问。继承
能够被任何人访问。但其余 module 中不能够被 override 和继承,而在 module 内能够被 override 和继承。get
能够被任何人使用,包括 override 和继承。io
原文出自:www.hangge.com 转载请保留原文连接:www.hangge.com/blog/cache/…class
open > public > interal > fileprivate > private