- 模块和源文件
- 访问级别
一、模块和源文件
模块:指的是独立的代码单元,框架或应用程序会作为一个独立的模块来构建和发布。
Xcode 的每个 target(例如框架或应用程序)都被当作独立的模块处理。如果你是为了实现某个通用的功能,或者是为了封装一些常用方法而将代码打包成独立的框架,这个框架就是 Swift 中的一个模块
源文件:是 Swift 中的源代码文件
二、访问级别
- Open 和 Public 级别可以让实体被同一模块源文件中的所有实体访问,在模块外也可以通过导入该模块来访问源文件里的所有实体(不仅可以被同一模块访问,也能被其他模块访问,但其他模块访问需要导入模块)。Open 和 Public 的区别在后面会提到。
- Internal 级别让实体被同一模块源文件中的任何实体访问,但是不能被模块外的实体访问(只能在当前模块访问,其他模块访问不了)。默认访问级别
- File-private 限制实体只能在其定义的文件内部访问(只能在当前源文件访问)。
- Private 限制实体只能在其定义的作用域,以及同一文件内的 extension 访问(只能在当前类调用,不能再其他类中使用)。
Open 为最高访问级别(限制最少),Private 为最低访问级别(限制最多)
Open 和 Public 区别
比较点:继承、子类重写(Public 只能在模块内被继承或重写,Open则可以在模块内或者被导入的模块内继承或重写)
- Public 或者其它更严访问级别的类,只能在其定义的模块内部被继承。
- Public 或者其它更严访问级别的类成员,只能在其定义的模块内部的子类中重写。
- Open 的类,可以在其定义的模块中被继承,也可以在引用它的模块中被继承。
- Open 的类成员,可以在其定义的模块中子类中重写,也可以在引用它的模块中的子类重写。
三、访问级别顺序
Open > Public > Internal > File-private >Private
网友评论