ios - 为什么需要在公共(public)访问控制 viewController 中重写 viewDidLoad 之前设置 public

标签 ios swift public

为什么在公共(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/

相关文章:

java - 学习java,为什么我的私处是private?

ssl - 我无法将公钥和私钥合并到一个 PFX 文件中

ios - 从 firebase 获取用户数据?

ios - 检查 UIImage 是否是横向图像

Swift:在原始 GameScene 上加载新的 SKScene? (仍然保留 GameScene 在下面?)

ios - 使用多行 UILabel 自动调整自定义 View 的大小

java - 从另一个类更改 JFrame 的可见性

ios - 在 TableView Controller (didSelectRowAtIndexPath) 中设置整数值以用于 PList (iOS)

ios - GCDAsyncUdpSocket, "Cannot bind socket more than once"

ios - 使用 Fabric 注销事件 Twitter session