私人vs文件私人
- 文件专用 访问将实体的使用限制为自己定义的源文件。 当在整个文件中使用特定功能的实现细节时,使用文件专用访问权限可以隐藏这些细节。
- 专用 访问将实体的使用限制为封闭的声明以及该声明在同一文件中的扩展名。 当仅在单个声明中使用特定细节的实现细节时,使用私有访问权限可以隐藏这些细节。
- 私人的
仅在类及其扩展名中具有私有访问权限(当扩展名位于同一.swift文件中时)。 - 私人档案
仅在类及其扩展名和子类中提供文件专用访问(当扩展名或子类位于同一.swift文件中时)。 + 同一文件中的子类。 - 让我们创建一个示例。
- 我们有3个Controllers类,分别为ViewController,DetailViewController和ScreenViewController。
- 现在,在ViewController中声明了2个属性,带有private的 testCount和带有fileprivate的newCount。
我们可以在上面的代码中看到。 由于访问控制fileprivate,我们无法访问ScreenViewController中的newCount。 现在,仅在ViewController文件中声明newCount。
如我们所见,由于在同一文件中声明了newCount,因此可以在ScreenViewController中访问它。
现在让我们对testCount做同样的事情。 正如我们在屏幕快照中看到的那样,我们也无法在同一文件中访问testCount。 而我们可以在扩展类UITextFieldDelegate中访问newCount和testCount。
结论:Private和FilePrivate都不能在声明它们的文件外部访问。 唯一的区别是FilePrivate变量可在子类和扩展名中访问,而Private只能在扩展名中访问,而在子类中不可访问。