Swift 的访问权限管理

6 min read

Swift中的访问权限管理是通过关键字来实现的,可以设置为public、internal、fileprivate、private。这些关键字指定了类、结构体、枚举、变量、常量、函数等的访问级别。

  1. public:最高级别的访问权限,可以在任何文件中使用、继承、重写、引用。一般用于最重要的公共接口,如果一个类型或成员被标记为public,则默认情况下,在其他模块中都可以访问。

  2. internal:默认访问级别,可以在当前模块中访问,但是在其他模块中无法访问。如果一个类型或成员被标记为internal,则默认情况下,在同一模块的其他文件中都可以访问。

  3. fileprivate:文件私有访问级别,只有在当前文件中可访问,其他文件中无法访问。

  4. private:私有访问级别,只有在当前作用域中可访问,例如在类中,私有成员只能在同一个类的方法或计算属性中访问,不能在扩展中访问。

例如:

public class MyClass {
    fileprivate var filePrivateVar: String = "filePrivateVar"
    private var privateVar: String = "privateVar"
    internal var internalVar: String = "internalVar"

    public func func1() {
        print(filePrivateVar)
        print(privateVar)
        print(internalVar)
    }
}

class AnotherClass {
    func func2() {
        let myClass = MyClass()
        print(myClass.internalVar)
        print(myClass.filePrivateVar) // Error: 'filePrivateVar' is fileprivate
        print(myClass.privateVar) // Error: 'privateVar' is private
    }
}