swift 权限控制学习

访问控制可以限定你在源文件或者模块中访问代码的级别。

注意:
为方便起见,在代码中可以设置访问级别的它们(属性、基本类型、函数等)在下面的章节中我们称之为实体。

模块和源文件

swift中的访问控制模型基于模块和源文件这两个概念。
模块指的是:framework或者app bundle。
源文件指的是:swift中的swift file,就是编写swift代码的文件, 它通常属于一个模块。通常一个源文件中包含一个类,在类中包含函数、属性等实体。

访问级别

在swift中,访问级别头如下使用原则:访问的统一性。例如:

  • 一个public访问级别的变量,不能将它的类型定义为internal和private的类型。 因为变量可以被任何人访问, 但是定义它的类型不可以,所以这样会出错。
  • 函数的访问级别不能高于它的参数、返回类型的访问级别。 因为如果函数定义为public而参数或者返回值类型定义为internal或者private, 就会出现函数可以被任何人访问,但是它的参数或者返回类型不可以。

默认访问级别

代码中所有的实体, 如果不明确的定义其访问级别, 那么它默认为internal级别。在大多数情况下,我们不需要明确的设置实体的访问级别, 因为我们大多数时候都是在开发一个app bundle。

单目标应用程序的访问级别

当你在编写一个单目标应用程序时, 该应用程序的所有功能都是为该应用服务的, 不需要提供给其他应用或者模块使用, 所以我们不用明确的设置访问级别, 使用默认的访问级别internal即可。 但是如果你愿意, 你也可以使用private级别,隐藏一些功能实现的细节。

framework的访问级别

当你在开发framework时,就需要吧一些实体定义为public级别, 以便其他导入该framework后可以正常使用其功能。这些被你定义为public的实体,就是这个framework的api。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容