扩展和内部访问控制,是否在较新的Swift版本中进行了更改?

时间:2018-06-19 13:53:17

标签: swift

我习惯使用扩展名和访问控制限定符将代码分成逻辑/相关的块。例如:

// 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版本之间进行了更改还是从未奏效?当fileprivateprivate限定词改变时,它会改变吗?

0 个答案:

没有答案