Swift tips - 权限控制

作者: coolma | 来源:发表于2016-03-31 12:16 被阅读110次

Swift 权限控制

在Swift语言中,最早是没有相关的对象权限控制的,这也是被人诟病的一个原因。而现在Swift中,现在已经有了非常灵活的权限控制。

为什么要有权限

为什么要权限控制,就是因为我们的程序里,不同的对象或是属性,可能希望不同暴露给不同的接口出去,比如我们要做一个Framework,我们只希望我们的接口暴露出去,而不是把内部的变量或者实现方法暴露,所以我们就只希望我们的接口方法是Public的,而其他的只是private的。我们就可以指定元素的是否对其他元素可见。这只是简单的一个例子,在swift中我们可以指定更加细粒度的权限控制。在其他语言中,比如Java,是在每个方法和属性前面定义我们的访问权限的。

权限控制类型

在介绍权限以前,首先要明确两个概念,模块和源文件。模块指的是我们把一个发布出的一组代码。例如我们的Foundation Framework, 而源文件就是指的当前文件。而我们有三种控制类型,public, internal, private.这三种类型就是基于这两个概念的。
public: 我们的这个实体对模块中的所有文件和引用模块中的所有文件可见。
internal: 我们的这个实体只对模块里的文件可见。这个是默认的控制类型,如果不指定关键字就是这个。
private: 我们的实体只对我们的源文件中可见。

如何使用

我们举个栗子来看,例如我们有个公司类,里面有两个属性,我们需要将我们的属性isBigCompany作为private

class Company {
    var employeeNumber = 2000
    private var isBigCompany = false
}

这个没有什么好说的,那如果我们的想让我们的属性是只有在此文件中是可见的,其他地方对于这个属性是只读的,而不能写,怎么办呢?我们可以使用如下的方法:

class Company {
    var employeeNumber = 2000
    internal private(set) var isBigCompany = false
}

表示了我们的这个的get的时候是internal, 在set的时候是private,所以在文件外部是无法进行修改的,只能在本文件中访问。因为我们的默认的可见性就是internal,所以可以简化写为:

class Company {
    var employeeNumber = 2000
    private(set) var isBigCompany = false
}

如果有什么问题,请和我联系,微信公众账号 - 马哥水果派。


personal wechat public

原文链接

相关文章

  • Swift tips - 权限控制

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

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

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

  • 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 权限控制学习

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

  • Linux常用命令

    cd命令 切换当前目录位置的命令 Tips:Linux有严格的访问权限控制,所以普通用户只能切换到自己拥有权限的目...

  • iOS-Swift-访问控制

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

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

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

网友评论

    本文标题:Swift tips - 权限控制

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