1

下面是我的代码片段?

extension UISwitch{
    open override func draw(_ rect: CGRect) {
        self.tintColor = UIColor.red
    }
}

根据苹果文档,您不应在扩展中覆盖。我明白这一点。现在我在这段代码中没有收到错误,我的应用程序中的所有开关都以红色作为色调。

我读过文章,这是因为动态调度,因为 UISwitch 是由 NSObject 继承的类。

有人可以帮我理解这个概念吗?为什么我们不应该这样做?如果 swift 是静态调度,这仍然如何工作?

4

0 回答 0