美文网首页
Swift 2.2 访问控制(Access Control)

Swift 2.2 访问控制(Access Control)

作者: 阿吖嗄 | 来源:发表于2016-08-09 15:36 被阅读14次

模块和源文件

Swift中的访问控制模型基于模块和源文件这两个概念。

模块指的是Framework或App bundle。在Swift中,可以用import关键字引入自己的工程。

在Swift中,Framewordk或App bundle被作为模块处理。如果你是为了实现某个通用的功能,或者是为了封装一些常用方法而将代码打包成Framework,这个Framework在Swift中就被称为模块。不论它被引入到某个App工程或者其他的Framework,它里面的一切(属性、函数等)都属于这个模块。

源文件指的是Swift中的Swift File,就是编写Swift代码的文件,它通常属于一个模块。通常一个源文件包含一个类,在类中又包含函数、属性等类型。

访问级别

Swift提供了三种不同的访问级别。这些访问级别相对于源文件中定义的实体,同时也相对于这些源文件所属的模块。

Public:可以访问自己模块或应用中源文件里的任何实体,别人也可以访问引入该模块中源文件里的所有实体。通常情况下,某个接口或Framework是可以被任何人使用时,你可以将其设置为public级别。

Internal:可以访问自己模块或应用中源文件里的任何实体,但是别人不能访问该模块中源文件里的实体。通常情况下,某个接口或Framework作为内部结构使用时,你可以将其设置为internal级别。

Private:只能在当前源文件中使用的实体,称为私有实体。使用private级别,可以用作隐藏某些功能的实现细节。

Public为最高级访问级别,Private为最低级访问级别。

访问级别的使用限制

在Swift中,访问级别有如下使用原则:访问级别统一性。

比如说:

一个public访问级别的变量,不能将它的类型定义为internal和private的类型。因为变量可以被任何人访问,但是定义它的类型不可以,所以这样就会出现错误。

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

默认访问级别

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

参考链接:Access Control

相关文章

  • Swift 2.2 访问控制(Access Control)

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

  • 访问控制

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

  • iOS-Swift-访问控制

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

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

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

  • 《Swift从入门到精通》(二十三):访问控制

    访问控制(Access Control)(学习笔记) 环境Xcode 11.0 beta4 swift 5.1欢迎...

  • Swift-OOP-权限控制

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

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

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

  • swift 访问权限

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

  • 18-访问控制

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

  • Swift 访问控制(Access Control)

    在访问控制这块,Swift提供了五个不同的访问级别(以下是从高到低排列,实体指被访问级别修饰的内容) open :...

网友评论

      本文标题:Swift 2.2 访问控制(Access Control)

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