美文网首页
Swift 访问控制机制

Swift 访问控制机制

作者: 秋雁上海 | 来源:发表于2020-07-28 22:42 被阅读0次

概述

隐藏实现机制,仅暴露对应的接口和 API 给外部调用者,是面向对象的最佳实践之一。访问控制机制(Access Control)是实现此机制的利器之一。类似于 c++、Java、C#等,Swift 语言也加入了访问控制机制,而且颗粒度更细,以便对代码进行更精细化的控制。

访问控制的施加对象

  • 类型(individual types)
    • 类 (class)
    • 结构 (structure)
    • 枚举 (enumration)
  • 类型之
    • 属性 (property)
    • 方法 (method)
    • 初始化器 (initializer)
    • 下标 (subscript)

模块和源文件

  • 模块(module) 指的是一个单独的代码发布单元,例如 framework、app、package等。其特征是可以在其他模块中使用 import 关键字导入和使用。
  • 源文件(source file) 指的是一个单独的 Swift 源代码文件,通常在模块或者 app 中。

访问控制表

Access Level
(访问级别)
继承和 override 外部
(App等)
module
(模块)
source file
(当前代码文件)
类/结构 说明
open 最高等级。在外部模块中,可以继承,也可以 override。
public 公开。在外部模块中,不可继承和 override。
internal 缺省访问控制级别
模块内部均可访问。
fileprivate 仅当前源文件内部访问。
private 仅当前源代码的当前类、结构内部访问。

访问级别的基本原则

Swift 的访问级别遵循一条基本原则:实体不能被定义在低访问级别的实体中。
例如:

  • public 变量不能定义在 internal 类型中
  • 函数的访问级别不能高于其参数和返回值的最低访问级别

例外情况是在单元测试中,测试案例可以访问任何内部实体。

访问控制语法

open class SomeOpenClass {}
public class SomePublicClass {}
internal class SomeInternalClass {}
fileprivate class SomeFilePrivateClass {}
private class SomePrivateClass {}

open var someOpenVariable = 0
public var somePublicVariable = 0
internal let someInternalConstant = 0
fileprivate func someFilePrivateFunction() {}
private func somePrivateFunction() {}

参考

相关文章

  • Swift 访问控制机制

    概述 隐藏实现机制,仅暴露对应的接口和 API 给外部调用者,是面向对象的最佳实践之一。访问控制机制(Access...

  • 第二章 访问控制

    要点 常见访问控制机制 威胁评估 一、常见访问控制机制 常见的访问控制机制有 4 种:DAC、role-BAC、r...

  • Swift 3必看:新的访问控制fileprivate和open

    Swift 3必看:新的访问控制fileprivate和open Swift 3必看:新的访问控制filepriv...

  • 六、API安全机制-访问控制(授权)

    源码下载 一、API安全机制-访问控制 API安全机制.png 访问控制 访问控制算是API业务层的安全策略,为了...

  • 十六、访问控制

    访问控制 访问控制 在访问权限控制这块,Swift提供了5个不同的访问级别(以下从高到低排列) open:允许在定...

  • iOS学习笔记49-Swift(九)访问控制

    一、Swift的访问控制 Swift中的访问控制模型基于模块和源文件这两个概念 模块指的是Framework或Ap...

  • Swift 访问控制

    Swift’s access control model is based on the concept of m...

  • Swift:访问控制

    中文文档 一、模块和源文件 Swift 中的访问控制模型基于模块和源文件这两个概念。 模块指的是独立的代码单元,框...

  • Swift: 访问控制

    和其他高级语言一样Swift中也有访问控制,在Swift中提供了private、internal、public三种...

  • Swift 访问控制

    模组 Module 模组 是代码分布的单一单元。比如一个被作为一个单位编译和发布,别且可以被其它模组用import...

网友评论

      本文标题:Swift 访问控制机制

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