2017-07-26 77 views
0

我一直在搜索访问控制指南和教程,但找不到任何信息。我应该使用内部类型的公共成员吗?

想象一下,你有一些类A实现的Swift模块。这个班级是internal。它有一些财产,我们称之为prop

问题是:如果将访问级别从internal设置为public,会发生什么变化?

internal class A { 

    public var prop: String? 
} 

我看到了这样的代码的例子,但不明白,为什么。当你决定制作你的类型public时,它是否有用,所以你不需要改变属性和方法的访问级别?或者它还有一些其他的实际用途,如给别人访问,而类型仍然是internal

+2

比较[为什么我允许方法访问比类访问更少限制?](https://stackoverflow.com/q/40289745/2976878)。访问没有区别,但它允许您记录如果类型暴露于较高访问级别,您认为成员应具有的访问级别。 – Hamish

回答

0

按照苹果的文档

公共变量不能被定义为具有内部, 文件的私人或私有类型,因为类型可能不提供 无处不在的公共变量被使用。

进一步了解内部 -

内部访问使得能够从他们的定义模块任何源文件 内使用的实体,但不是在 模块之外的任何源文件。定义应用程序或框架的内部结构时,通常使用内部访问。

所以没有使用内部类声明的public。

0

有一个在整体功能上没有区别:因为你的类是internal,它不能在公众成员暴露出来,说public var propA : Apublic func f(a:A),以便其成员有public的知名度其实没什么区别。

但是,通过使用public您可以避免重复自己:您已经指定了全班internal,因此您不需要将其所有成员都指定为internal

如果您决定稍后将类别转换为public,也会变得很有帮助,因为您只将一个internal修改器更改为public

相关问题