美文网首页
Swift 5.x 权限控制

Swift 5.x 权限控制

作者: ShenYj | 来源:发表于2020-07-19 16:19 被阅读0次

模块和源文件

  • 模块指的是独立的代码分发单元, 框架或应用程序会作为一个独立的模块来构建和发布.在Swift中, 一个模块可以使用import关键字导入另外一个模块.
  • 源文件就是Swift中的源代码文件, 它通常属于一个模块, 即一个应用程序或者框架. 尽管我们一般会将不同的类型分别定义在不同的源文件中, 但是同一个源文件也可以包含多个类型、函数之类的定义.

访问级别

  • open: 公开权限, 最高的权限, 可以被其他模块访问、继承及复写. 只能用于类和类的成员.
  • public: 公有访问权限, 类或者类的公有属性或者公有方法可以从文件或者模块的任何地方进行访问. 一个App就是一个模块, 一个第三方API、第三方框架等都是一个完整的模块, 这些模块如果要对外留有访问的属性或者方法, 就应该使用public的访问权限. public的权限在Swift 3.0后无法在其它模块被复写方法/属性或被继承.
  • internal: 内部, 即有着internal访问权限的属性和方法在模块内部可以访问, 超出模块内部就不可被访问了. 在Swift中默认就是internal的访问权限.
  • fileprivate: 文件私有访问权限, 被fileprivate修饰的类或者类的属性或方法可以在同一个物理文件中访问. 如果超出该物理文件, 那么有这fileprivate访问权限的类、属性和方法就不能被访问了.
  • private: 私有访问权限, 被private修饰的类或者类的属性或方法可以在同一个物理文件中的同一个类型(包含extension)访问. 如果超出物理文件或不属于同一类型, 那么有着private访问权限的属性和方法就不能被访问.

潜在规则1
  • 如果一个类的访问级别是fileprivateprivate那么该类的所有成员都是fileprivateprivate(此时成员无法修改访问级别), 如果一个类的访问级别是openinternalpublic那么它的所有成员都是internal, 类成员的访问级别不能高于类的访问级别
    注意: 嵌套类型的访问级别也符合此条规则
潜在规则2
  • 常量、变量、属性、下标脚本访问级别低于其所有声明的类型级别, 并且如果不是默认访问级别(internal)要明确声明访问级别

例如一个常量是一个private类型的类类型, 那么此常量必须声明为privatefileprivate

潜在规则3
  • 在不违反潜在规则1潜在规则2的情况下, setter的访问级别可以低于getter的访问级别.

例如一个属性访问级别是internal, 那么可以添加private(set)修饰将setter权限设置为private, 在当前模块中只有此源文件可以访问, 对外部是只读的.

潜在规则4
  • 必要构造方法(required修饰)的访问级别必须和类访问级别相同, 结构体的默认逐一构造函数的访问级别不高于其成员的访问级别, 其他方法(包括其他构造方法和普通方法)的访问级别遵循潜在规则1

例如一个成员是private那么这个构造函数就是private, 但是可以通过自定义来声明一个public的构造函数

相关文章

  • Swift 5.x 权限控制

    模块和源文件 模块指的是独立的代码分发单元, 框架或应用程序会作为一个独立的模块来构建和发布.在Swift中, 一...

  • iOS 属性修饰词和权限控制词

    Swift 权限控制词 概述 swift3.0中,新增了fileprivate和open权限。swift4.0中,...

  • Swift tips - 权限控制

    Swift 权限控制 在Swift语言中,最早是没有相关的对象权限控制的,这也是被人诟病的一个原因。而现在Swif...

  • Swift访问控制(Open、Public、Internal、F

    其中 fileprivate 和 open 是 Swift 3 新添加的。由于过去 Swift 对于访问权限的控制...

  • 密码输入页面的实现-模仿支付宝

    github代码库地址 涉及知识点总结: swift类的继承 swift中权限控制 swift中的懒加载 swif...

  • Swift 访问控制 ⑭

    1. 访问控制权限 在访问权限控制这块,Swift提供了5个不同的访问控制级别(以下是从高到低排列,实体指被访问级...

  • Swift2.0迁移到3.0情况记录

    fileprivate替换private: fileprivate是swift新增加的访问控制权限。private...

  • swift 权限控制学习

    访问控制可以限定你在源文件或者模块中访问代码的级别。 注意:为方便起见,在代码中可以设置访问级别的它们(属性、基本...

  • iOS-Swift-访问控制

    1. 访问控制(Access Control) 在访问权限控制这块,Swift提供了5个不同的访问级别(以下是从高...

  • [Swift5.1] 19-访问控制

    访问控制(Access Control) 在访问权限控制这块,Swift提供了5个不同的访问级别:(以下是从高到低...

网友评论

      本文标题:Swift 5.x 权限控制

      本文链接:https://www.haomeiwen.com/subject/ayzlkktx.html