为什么需要在公共访问控制viewController中覆盖viewDidload之前设置public
public class customViewController: UIViewController {
override public func viewDidLoad() {
super.viewDidLoad()
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除公众,Xcode会给出错误警告!
Ste*_*ord 10
错误消息非常明确:
重写实例方法必须与它覆盖的声明一样可访问.
这意味着方法的访问级别不得低于覆盖的方法.
例如给出这个类:
public class Superclass {
internal func doSomething() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您无法doSomething使用不太容易访问的方法覆盖interal.例如
public class Subclass : Superclass {
// error
private override func doSomething() {
}
}
Run Code Online (Sandbox Code Playgroud)
但是,您可以覆盖方法并使其更易于访问:
public class Subclass : Superclass {
public override func doSomething() {
// You can even call the internal method in the superclass
super.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
该参考文档有很多细节上的这一点,但似乎离开这个关系的意义.