0%

Swift Access Control

  1. open: 允许在定义实体的模块,其他模块中访问,允许其他模块进行继承,重写(open只能用在类,类成员上)
  2. public: 允许在定义实体的模块,其他模块中访问,不允许继承,重写(模块内可以)
  3. internal: 只允许在定义实体的模块中访问,不允许在其他模块中访问(默认)
  4. fileprivate: 在同一文件中访问
  5. private: 在实体内访问

全局内用private修饰类,变量或扩展,就是用fileprivate

class Test {
    private struct Dog {
        var age = 0 //Test内可用,如果显式用private修饰,则Person内不能使用age
        func run() { }
    }
    
    private struct Person {
        var dog = Dog()
        mutating func walk() {
            dog.run()
            dog.age = 1
        }
    }
}

–EOF–