【发布时间】:2016-05-19 13:22:50
【问题描述】:
我对 internal 和 private 访问修饰符感到困惑。
文档说:
“内部访问使实体可以在任何源文件中使用 来自他们的定义模块,但不在此之外的任何源文件中 模块。在定义应用程序或 框架的内部结构。”
我的想法是,如果您在自己的应用程序中,那么通过 internal 可以访问所有内容。但这不是真的,因为当我有一个默认内部视图控制器并且我在该视图控制器上有一个内部函数时,我无法从另一个组中的另一个文件访问它(您在 xCode 中创建这些)。
我尝试的是在 A 组中有一个 foo 方法的 ViewController 然后在 B 组中我创建了一个这样的 ViewController:
let vc: FakeViewController = FakeViewController()
vc.foo()
那么 internal 是否仅限于同一组?还是我理解错了?
在视图控制器中创建私有方法和 vars/let 有用吗?
【问题讨论】:
-
“组”是什么意思?
-
您可以在 xCode 中创建的组。不知道有没有关系。
-
组对访问控制没有影响,它们只是组织项目/工作区的工具。文档没有错,所以如果你不能从某个地方访问
internal func,那一定是因为它在不同的模块中。 -
参考下面的链接你会得到正确的描述和一个例子。 developer.apple.com/swift/blog/?id=5