Swift - 在 super class 的变量发生变化时调用 subclass 方法

Swift - Call subclass method on change in variable of super class

我有一个 superclass A 和 subclass B。两者都是 ViewController。代码如下:

class A {
    var a : Bool = false
}

class B : A {
    var b : Int = 10
    func changeB() {
        b = 20
    }
}

因此,class A 中有一个变量 a。每当它发生变化时,它应该更改 class B 的变量 b,即它应该调用一个方法 changeB() 来更新 b。

实现此目的的一种方法是使用事件调用方法 changeB(),该方法将更新 b.

有没有其他方法可以达到同样的效果?

这只是供其他人理解的模板。实际问题是 - Class 由地图视图和列表视图组成,它处理 2 个视图之间的切换。 Class B 继承了 A 并且在视图顶部有一个按钮,该按钮应该只显示在列表视图中而不是地图视图中。

所以,我想改变我的button.isVisible 属性,它在class B,当视图在列表视图和地图视图之间切换时,在class A.

中处理

您需要在您的子类中覆盖 a,以便您可以从它的 setter 调用 changeB

class B : A {
    var b : Int = 10
    override var a: Bool {
        set {
            super.a = newValue
            self.changeB()
        }
        get {
            return super.a
        }
    }

    func changeB() {
        b = 20
    }
}