ios - 为什么在 Swift 中不常见使用私有(private)属性/方法

标签 ios swift accessor

首先让我告诉你,我刚开始接触 Swift 并没有真正看到用它编写的很多代码,但我看到的所有教程都没有像其他一些语言那样使用 private据我了解,Swift 具有三个访问控制,Private , PublicInternal , 与 Internal作为默认值。

我有点困惑,尽管我总体上没有很多编程经验,但我的理解是,在程序中,您将所有内容设为私有(private),并且只公开您想要公开的属性和方法暴露给其他类。

来自 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.

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

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

有人能这么好心地解释访问器的概念吗?为什么 Swift 是这样设计的? OOP 的经验和我可能对一般访问器的概念感到困惑。

谢谢

更新:今天 (01/07/2016) 我观看了来自类(class) Developing iOS 8 Apps with Swift 的视频 #3 应用 MVCStanford 提供iTunes 中的大学和分钟 24:15 Paul Hegarty 谈论访问控制,我强烈推荐它。

最佳答案

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

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

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

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

关于ios - 为什么在 Swift 中不常见使用私有(private)属性/方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850818/

相关文章:

java - 在android代码中没有得到web服务的响应

ios - 使 UIScrollView 像 UIPageController 一样滚动

java - 如何在 Kotlin 中创建没有访问器的属性?

iOS CoreDataGeneratedAccessors 并保存为一对多

ios - 调用中缺少参数 jsonData

ios - UITableViewCell 内的 UITextView 键盘问题

android - 是否可以为少数人开发一个应用程序?

ios - PHImageManager 的 requestImage 在滚动数千张图像时锁定 UI

ios - UIBarButtonItem 长按/短按

超越属性访问器的 Javascript