Swift 3中新的访问控制关键字fileprivate和open

在Swift 3中除去原有的3个访问控制关键字private,public,internal,又添加了2个关键字fileprivate和open

它们可以看成是对private和public的进一步细分

原来的private对于同一个文件的各个方法来说都可以访问到,这往往不是开发者想要的结果,于是原来的private变成了fileprivate,而private变为了真正的私有访问控制.这意味着即使在同一个文件中用private修饰的方法也不可以被代码域之外所访问了:

class Foo{
    private func test(){
        print("hello private func!!!")
    }

    func show(){
        test()
    }
}

class Sub:Foo{
    func show_sub(){
        test() //ERROR!!!
    }
}

Foo().show()

如果把上述代码中的private换为fileprivate那么一切照旧,错误就会消失.

而对于open来说是补充public语义上的缺陷.以往的public有2层含义:

1.该item可以在其他作用域被访问
2.给

你可能感兴趣的:(iOS开发小干货)