美文网首页
访问控制

访问控制

作者: 大写的空气 | 来源:发表于2021-05-28 19:08 被阅读0次
open

同一模块内(target)所有实体都可访问,模块外也可以被访问,并且能在模块外被继承与重写

public

与open对比,模块外无继承与重写功能

internal

同一模块源文件中的任何实体访问,但是不能被模块外的实体访问。默认的访问级别,当然也有例外,如类的访问级别低于internal,则它内部变量或方法的访问级别默认也会低于internal,跟类的访问级别一致.

fileprivate

只能在其定义的文件(如.swift文件)内部访问

private

只能在当前class中使用

  • 元组的访问级别由元组中访问级别最严格的类型来决定
  • 函数的访问级别根据访问级别最严格的参数类型或返回类型的访问级别来决定。如当函数返回类型为private,函数需显示的声明为private
  • 子类的访问级别不得高于父类的访问级别。例如,父类的访问级别是 internal,子类的访问级别就不能是 public
  • 通过重写给所继承类的成员提供更高的访问级别。如类 A 的访问级别是 public,它包含一个方法 someMethod(),访问级别为 fileprivate。类 B 继承自类 A,访问级别为 internal,但是在类 B 中重写了类 A 中访问级别为 fileprivate 的方法 someMethod(),并重新指定为 internal 级别。通过这种方式,我们就可以将某类中 fileprivate 级别的类成员重新指定为更高的访问级别,以便其他人使用
  • Setter 的访问级别可以低于对应的 Getter 的访问级别,这样就可以控制变量、属性或下标的读写权限。在 var 或 subscript 关键字之前,你可以通过 fileprivate(set),private(set) 或 internal(set) 为它们的写入权限指定更低的访问级别
  • 协议中的每个方法或属性都必须具有和该协议相同的访问级别。如果你定义了一个 public 访问级别的协议,那么该协议的所有实现也会是 public 访问级别。这一点不同于其他类型,例如,类型是 public 访问级别时,其成员的访问级别却只是 internal

当你的应用程序包含单元测试 target 时,为了测试,测试模块需要访问应用程序模块中的代码。默认情况下只有 open 或 public 级别的实体才可以被其他模块访问。然而,如果在导入应用程序模块的语句前使用 @testable 特性,然后在允许测试的编译设置(Build Options -> Enable Testability)下编译这个应用程序模块,单元测试目标就可以访问应用程序模块中所有内部级别的实体。

相关文章

  • Nginx防盗链、Nginx访问控制、Nginx解析php相关配

    image.png Nginx访问控制 Nginx访问控制Nginx访问控制 目录访问控制 正则匹配文件访问控制 ...

  • 汇总:CISSP重点安全知识

    访问控制模型: 访问控制分为自主访问控制(DAC)和非自主访问控制1、自主访问控制自主访问控制允许客体的所有者、创...

  • 访问控制

    1. 访问控制原理1.1 访问控制策略 2. 主体、客体和访问权 3. 自主访问控制3.1 自主访问控制的主要特点...

  • (翻译)fabric1.2.1新特性-访问控制列表

    访问控制列表 Access Control Lists(ACL) 什么是访问控制列表? fabric 使用访问控制...

  • 访问控制

    private 私有,只能在其定义域内使用 fileprivate 文件级别,整个swift源文件内有效 inte...

  • 访问控制

    在Swift语言中,访问修饰符有五种,分别为fileprivate,private,internal,public...

  • 访问控制

    在Swift语言中,访问修饰符有三种,分别为private,internal和public。同时,Swift对于访...

  • 访问控制

    1>模块和源文件 Swift 中的访问控制模型基于模块和源文件这两个概念。 模块指的是独立的代码单元,框架或应用程...

  • 访问控制

    访问控制 Access Control 访问级别 实体是被访问级别修饰的内容绝大部分实体都是internal 修饰...

  • 访问控制

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

网友评论

      本文标题:访问控制

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