如何在Swift 3中的子类之间共享变量?

时间:2016-12-12 15:39:28

标签: swift inheritance

我有一个超类,它有一个布尔变量,我想在子类之间共享它(通过引用传递)

Class parentClass: UIViewController {
    var sharedVariable: Bool = false
}

Class firstChild: parentClass {

    @IBAction func myButtonTouched(_ sender: Any) {
        sharedVariable = true
    }
}

Class secondChild: parentClass {
    print(sharedVariable)
}

但是当我在firstClass中更改sharedVariable时,它不会为secondClass更改它。

我将不胜感激任何帮助

1 个答案:

答案 0 :(得分:4)

您可以使用静态变量,就像这样(我稍微纠正了代码和代码样式):

class ParentClass: UIViewController {
    static var sharedVariable: Bool = false
}

class FirstChild: ParentClass {

    @IBAction func myButtonTouched(_ sender: Any) {
        ParentClass.sharedVariable = true
    }
}

class SecondChild: ParentClass {
    func test() {
        print(ParentClass.sharedVariable)
    }
}

然后,为了测试,你可以这样做:

let secondChild = SecondChild()
secondChild.test() // prints false
let firstChild = FirstChild()
firstChild.myButtonTouched(firstChild)
secondChild.test() //prints true