Swift中的朋友类(访问内部类的私有成员)

时间:2016-03-22 21:50:21

标签: swift access-modifiers

我在两个不同的文件中有两个Swift类,它们都在同一个目标中。有没有办法让一个人访问另一个的private成员而不将其公开为internalpublic

(我基本上在C ++中寻找与friend类似的东西。)

动机:

这对于在单独的"过渡"中实施UIViewControllerAnimatedTransitioning这样的事情非常有用。 class-通常需要对源视图控制器和目标视图控制器有深入了解,而不要求那些视图控制器将private子视图暴露给目标的其余部分。

1 个答案:

答案 0 :(得分:4)

  

我在两个不同的文件中有两个Swift类,它们都在同一个目标中。有没有办法让一方访问另一方的私人成员而不将其暴露为内部或公共?

没有。您获得的规则是您获得的规则。没有一些神奇的方法来打破它们。您可以将这两种类型放在同一个文件中,或者(在另一个极端)您可以将它们移动到自己的模块中并给它们internal范围,以便它们可以看到彼此但没有其他人可以看到他们。

  

这对于在单独的“转换”类中实现UIViewControllerAnimatedTransitioning这一点非常有用 - 通常需要对源视图控制器和目标视图控制器有深入了解 - 而不要求那些视图控制器将私有子视图暴露给目标的其余部分

我不明白你为什么需要这个。很容易将UIViewControllerAnimatedTransitioning材料移动到它自己的文件中。无需公开私人子视图。那就是为什么这些东西被分解成一个单独的协议。动画师和视图控制器的角色已经完全独立。如果您认为私人子视图的曝光是必需的,那么您做错了(您应该问一个关于 的问题)。 [例如,您可能不知道transitionCoordinator函数,它允许视图控制器参与其过渡动画而不知道它是什么。]