为什么在公共(public)访问控制viewController中覆盖viewDidload之前需要设置public
public class customViewController: UIViewController {
override public func viewDidLoad() {
super.viewDidLoad()
}
}
如果我删除 public,Xcode 会给出错误警告!
最佳答案
错误信息相当明确:
Overriding instance method must be as accessible as the declaration it overrides.
这意味着方法的访问级别不得低于其覆盖的方法。
例如给定这个类:
public class Superclass {
internal func doSomething() {
...
}
}
然后您不能使用比 interal
更难访问的方法覆盖 doSomething
。例如
public class Subclass : Superclass {
// error
private override func doSomething() {
}
}
然而,您可以重写一个方法并使其更易于访问:
public class Subclass : Superclass {
public override func doSomething() {
// You can even call the internal method in the superclass
super.doSomething()
}
}
reference documentation对此有很多细节,但似乎将这种关系留给暗示。
关于ios - 为什么需要在公共(public)访问控制 viewController 中重写 viewDidLoad 之前设置 public,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33143809/