【发布时间】:2015-11-22 01:58:49
【问题描述】:
首先让我告诉你,我刚开始使用 Swift,并没有真正看到用它编写的很多代码,但是我看到的所有教程都没有像在其他一些语言中那样使用私有据我了解,Swift 有三个访问控制,Private、Public 和Internal,Internal 是默认设置。
我有点困惑,尽管我总体上没有很多编程经验,但我的理解是,在程序中,您将所有内容设为私有,并且只公开您想要的属性和方法暴露给其他类。
来自 Apple 文档
除了提供各种级别的访问控制,Swift 通过以下方式减少了指定显式访问控制级别的需要 为典型场景提供默认访问级别。 确实,如果你 正在编写单目标应用程序,您可能不需要明确指定 完全访问控制级别。
对我来说,通过将每个属性/方法保留为默认值 (Internal),您基本上可以访问其他类的值,对吗?
为什么在 Swift/Cocoa 中您很少看到使用 Private 访问器来访问您不希望程序的其他部分访问的属性?
谁能这么好心地解释一下一般的概念访问器以及为什么 Swift 会这样设计,或者如果我在上面所做的假设有误,甚至可以更好地纠正我,我也不需要太多在 OOP 方面的经验,我可能会对一般访问器的概念感到困惑。
谢谢
更新:今天(01/07/2016)我观看了视频 #3 应用 MVC,来自 @ 提供的课程 Developing iOS 8 Apps with Swift iTunes 中的 987654328@ University 和 24:15 Paul Hegarty 谈论访问控制,我强烈推荐它。
【问题讨论】:
-
我们确实使用
private。我们只是不告诉你这件事,因为它是……嗯……私人的。 ?????? -
您使用尽可能窄的访问控制的直觉仍然适用,恕我直言。对于您在教程中看到的 sn-ps 对这个主题的忽视,我并不感到惊讶,因为这是一个在更大的实际应用程序中往往会出现的问题。我唯一一次看到使用
private是当有一些计算属性由一些存储属性支持时,与该存储属性的直接交互显然是有问题的:您经常会看到标记为private。但是,简而言之,我们中的许多人在我们自己的代码中使用private。 -
@Rob 您是否认为将
private设置为仅在类(类范围)内使用的任何属性并将其余属性保留为internal是一个好习惯?这样代码至少会更易读。