我习惯使用扩展名和访问控制限定符将代码分成逻辑/相关的块。例如:
// MARK: View configuration
private extension MyViewType {
func configureView() {
methodA()
methodB()
methodC()
}
private func methodA() {
}
private func methodB() {
}
private func methodC() {
}
}
如果看到的话,我的扩展名是MyViewType
私有的,并且内部有三种私有方法。唯一的内部方法是configureView
,因此在此扩展名之外,您只能调用该方法,而不能调用methodA|B|C
:
func instanceMethodInMyViewType() {
configureView() // Compiles
methodA() // Not compiles
}
但是,正如同事指出的那样,事实并非如此。您也可以调用私有方法,即使这些方法在扩展名内是私有的,也可以编译上面的第二行。
我认为访问控制和范围在扩展内部的工作方式相同。在Swift版本之间进行了更改还是从未奏效?当fileprivate
和private
限定词改变时,它会改变吗?