为什么在 Swift 中不常用 Private properties/methods

Why is not common the use of Private properties/methods in Swift

首先让我告诉你,我刚开始玩 Swift 并没有真正看到用它编写的很多代码,但我看到的所有教程都没有使用private 与其他一些语言一样,据我所知,Swift 具有三个访问控制,PrivatePublicInternal,其中 Internal 是默认设置。

我有点困惑,尽管我总体上没有很多编程经验,但我的理解是,在程序中,您将所有内容设为私有,并且只将 public 属性设为以及您想向其他人公开的方法 类.

来自 Apple 文档

In addition to offering various levels of access control, Swift reduces the need to specify explicit access control levels by providing default access levels for typical scenarios. Indeed, if you are writing a single-target app, you may not need to specify explicit access control levels at all.

对我来说,通过将每个 property/method 保留为默认值 (Internal),您基本上可以访问其他 类 的值,对吗?

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

有人能这么好心地解释一下访问器的一般概念以及为什么 Swift 是这样设计的吗?在 OOP 方面没有太多经验,我可能对一般访问器的概念感到困惑。

谢谢

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

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

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

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

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