美文网首页
Swift访问控制权限

Swift访问控制权限

作者: 不简单的风度 | 来源:发表于2018-07-06 16:17 被阅读24次

概述

Swift 3中,新增了 fileprivate 和 open 权限,而在Swift4 中,对 fileprivate 和 private 的访问范围做出了调整。访问控制限制你在不同源文件和 module 之前代码和代码之前的访问。这个特性让你可以隐藏一些代码的实现,和明确一些可以访问和使用的接口。

Modules 和 源文件

Swift 的访问控制模型是基于 module 和 源文件的。
一个 module 是一个独立的代码建造单元,例如一个 framework 或者 application 可以构建和包装成一个可以被其他 module 通过 Swift 的关键字 import 的单元。
一个源文件是在一个 module 里单独的 Swift 源码(或在 一个 app 或 framework 里的单独的文件) 。虽然常见的是在分开的源文件里定义单独的类型,但一个单独的源文件也能包含多个类型,方法等的定义。

访问级别

Swift 提供5个不同的访问级别,权限最高的是open,依次是 publicinternalfileprivate,最低的是private。默认使用的级别是 internal

open & public

使用 open 和 public 标记的实体在他们定义的 module 中的任意文件中都可以使用,并且在 import 了其定义的 module 的其他 module 的源文件中也能使用。一般在 framework 中指定公开的接口里使用 open 或者 public 级别。

open 和 public 的区别

  • 拥有 public 权限或者更低权限的类,只能在其定义的 module 中被子类化
  • 拥有 public 权限或者更低权限的类的成员,只能在其定义的 module 中被重写或子类化
  • 拥有open 权限的类可以在其定义和 import 的 module 中子类化
  • 拥有open 权限的类成员可以在其定义和 import 的 module 中被重写或子类化

internal

internal 修饰的实体在其定义 module 中的任意源文件中都可以访问,但是在其他 module 的任意源文件中都访问不了。一般在定义app 或者 framework 内部的结构的时候,使用 internal 级别。

fileprivate

fileprivate 限制了只能在其定义的源文件里面使用。使用 fileprivate 权限以隐藏其实现细节。当其只在整个源文件中使用的时候,使用 fileprivate 修饰。

private

private 访问权限限制其只能在定义的范围内,和其在同一文件中的 extension 中使用。当其只在当个声明中使用的时候,使用 private 修饰。

使用原则

子类: 子类的访问级别不能高于父类,但是子类复写的父类方法的访问级别可以高于父类
枚举: 枚举的每个值都和他们所属的枚举拥有相同的级别,并且并不能定义单独的访问级别。
协议: 你可以给协议指定访问级别,并且对于协议的每一项来说,访问级别都和协议相同。并且你不能单独给协议中单独的方法等定义不同的访问级别。

参考

Swift4 访问控制权限

相关文章

  • Swift 访问控制 ⑭

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

  • 十六、访问控制

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

  • iOS-Swift-访问控制

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

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

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

  • 第二十三节 Swift 的访问控制

    通过访问控制可以限定其它模块的代码对你代码的访问权限。 Swift 常用三种访问权限: Public:可以访问当前...

  • Swift-OOP-权限控制

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

  • Swift进阶(十六)访问控制

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

  • swift 访问权限

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

  • 18-访问控制

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

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

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

网友评论

      本文标题:Swift访问控制权限

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