我应该使用内部类型的公共成员吗?

时间:2017-07-26 11:12:28

标签: swift

我一直在搜索访问控制指南和教程,但无法找到任何信息。

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

问题是:如果我将internal的访问级别设置为public会有什么变化?

internal class A {

    public var prop: String?
}

我看到了这些代码的例子,但不明白,为什么。当您决定使用public类型时,它是否有用,因此您不需要更改属性和方法的访问级别?或者还有其他一些实际用途,例如在类型仍为internal的情况下允许其他人访问?

2 个答案:

答案 0 :(得分:0)

根据Apple doc

  

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

有关内部的更多信息 -

  

内部访问使实体可以在任何源文件中使用   来自他们的定义模块,但不在其他任何源文件中   模块。您通常在定义应用程序或a时使用内部访问权限   框架的内部结构。

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

答案 1 :(得分:0)

整体功能没有区别:由于您的课程为internal,因此无法在公开成员中公开,例如public var propA : Apublic func f(a:A),因此其成员public 1}}能见度没有区别。

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

如果您决定稍后将课程转换为public,这也会很有帮助,因为您只将一个internal修饰符更改为public