为什么在Swift中使用私有属性/方法并不常见

时间:2015-11-22 01:58:49

标签: ios swift accessor

首先让我告诉你,我刚刚开始使用Swift并且没有真正看到很多代码写在其中但是我看到的所有教程都不像其他语言那样使用私有据我所知,Swift有三个访问控制,PrivatePublicInternal,默认为Internal

我有点困惑,尽管事实上我一般没有很多编程经验,但我的理解是,在一个程序中,你将所有内容都设为私有,并且只公开你想要的属性和方法。暴露给其他类。

来自Apple Docs

  

除了提供各种级别的访问控制,Swift   减少了指定显式访问控制级别的需要   为典型方案提供默认访问级别。 确实,如果你   正在编写单目标应用程序,您可能不需要指定显式   访问控制级别。

通过将每个属性/方法保留为默认值(Internal),我基本上可以访问其他类的值,对吗?

为什么在Swift / Cocoa中你很少看到Private访问器用于你不希望程序的其他部分有权访问的属性?

有人可以如此善良并解释一般的概念访问器吗?为什么Swift以这种方式设计,或者甚至更好地纠正我,如果我在上面的假设我错了,我再也没有那么多在OOP中的经验,我可能会对访问者的概念感到困惑。

由于

更新:今天(2016年7月1日)我在Developing iOS 8 Apps with Swift提供的课程中观看了视频#3 应用MVC 来自Stanford大学的iTunes和分钟 24:15 Paul Hegarty谈到访问控制,我强烈推荐它。

1 个答案:

答案 0 :(得分:9)

Swift中的访问控制也让我感到惊讶,所以你并不孤单。 Swift使用的范式与我以前熟悉的C ++,Java,C#使用的范例完全不同。

Swift的访问控制不是基于类,而是基于源文件和模块。我们的想法是,如果您编写一个类,那么默认情况下您应该可以访问同一源文件或模块中其他类的所有成员。如果其他人扩展了您的课程,他们的代码将位于不同的模块和源文件中,因此除非您授予他们访问权限,否则他们将无法访问您的基类成员。

如果你考虑一下,Swift的访问控制范式与C ++ / Java的范式一样有意义,它只是不同。

请参阅http://www.swiftprogrammer.info/swift_vs_cpp.html,了解这些语言与其他语言之间的差异。