Swift5中fileprivate与private的差别浅析
前言
Fileprivate和private是Swift中访问控制修饰符的一部分。这些关键字与internal,public和open一起,使得可以限制访问其他源文件和模块中的代码。
private访问级别是最低和最严格的级别,而open访问是最高和最少限制的。 Swift的文档将详细解释所有访问级别,但在这篇文章中,我将解释两个亲密朋友之间的差异:fileprivate和private。
open访问是最高(限制性最小)的访问级别,private访问是最低(限制性最强)的访问级别。
这将提高可读性,并使其他人更容易使用和理解您的代码。
什么时候使用fileprivate
尽管关键字几乎相同,但其用例存在明显差异。 Fileprivate访问限制在同一定义的源文件中使用实体。使用fileprivate的唯一原因是,您想要在当前文件中不同的类或结构中,访问当前文件中的代码。这些类,结构都在一个文件中。
在下面的示例中,我们有一个ImageProvider和一个ImageViewController。我们可以使用fileprivate,如果它们在同一个文件中定义,并且我们希望允许在ImageProvider中访问imageView。
但是,如果我们要为ImageProvider结构创建一个单独的文件,我们会得到一个编译器错误:
由于fileprivate导致imageView无法访问
在我看来,它的使用场景不大。好的项目结构中,通常把实体定义在对应的文件中。
什么时候使用private
private关键字用得更多,并限制实体对封闭声明及其扩展的使用。但是,扩展必须在同一文件中定义。换句话说,私有声明在文件外部不可见。您可以使用此关键字仅显示与实体交互所需的最少代码。这将提高可读性,并使其他人更容易使用和理解您的代码。
Fileprivate vs private
最好通过image provider示例来解释差异。这两个访问权限关键词在同一文件中声明,它们将导致以下编译器错误:
private不能在class以外访问,fileprivate作用域是当前文件
总结
如您所见,fileprivate声明的图像视图可在同一文件中访问。但是,私有图像视图不可访问,因为它仅在实体本身中可见。另外 ImageViewController的扩展可以访问这个私有声明的图像视图。
好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。
上一篇:没有了
栏 目:Swift
下一篇:没有了
本文标题:Swift5中fileprivate与private的差别浅析
本文地址:https://www.xiuzhanwang.com/a1/Swift/11916.html
您可能感兴趣的文章
- 01-11swift中defer几个简单的使用场景详解
- 01-11Swift中defer关键字推迟执行示例详解
- 01-11Swift中初始化init的方法小结
- 01-11Swift中定义单例的方法实例
- 01-11Swift中排序算法的简单取舍详解
- 01-11Swift如何为设置中心添加常用功能
- 01-11Swift 4.0中如何引用3.0的第三方库
- 01-11Swift 4中一些实用的数组技巧小结
- 01-11Swift开发应用中如何更方便地使用颜色详解
- 01-11swift中利用runtime交换方法的实现示例
阅读排行
本栏相关
- 01-11Swift利用Decodable解析JSON的一个小问题
- 01-11swift中defer几个简单的使用场景详解
- 01-11Swift中初始化init的方法小结
- 01-11Swift中defer关键字推迟执行示例详解
- 01-11Swift利用纯代码实现时钟效果实例代码
- 01-11Swift中定义单例的方法实例
- 01-11Swift中排序算法的简单取舍详解
- 01-11Swift Json实例详细解析
- 01-11Swift如何为设置中心添加常用功能
- 01-11Swift利用指纹识别或面部识别为应用添
随机阅读
- 01-10C#中split用法实例总结
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10delphi制作wav文件的方法
- 04-02jquery与jsp,用jquery
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10SublimeText编译C开发环境设置