我可以在Swift中创建对变量的引用吗?

时间:2019-08-19 17:07:56

标签: swift

是否可以用很少的代码创建一个变量作为对另一个变量的引用,以便更改第一个变量的值也可以更改第二个变量的值?是否有任何现成的课程使这一切成为可能?还是我必须通过test.shared.changeMe = true来更改变量的值?

class Test {

    var shared: Test = Test()
    var changeMe: Bool = false

    func printValue() {

        print("changeMe: " + String(changeMe))

    }

}

class ViewController: UIViewController {
    override func viewDidAppear(_ animated: Bool) {
        var reference: Bool = test.shared.changeMe  // <- The variable "reference" should be a reference to the variable "changeMe" of the class test.
        reference = true
        print("Reference: " + String(reference))
        test.shared.printValue()
    }
}

class Test {
    var shared: Test = Test()
    var changeMe: Bool = false
    func printValue() {
        print("changeMe: " + String(changeMe))
    }
}

1 个答案:

答案 0 :(得分:0)

没有变量的引用,但是您可以使用计算变量来模拟行为。

计算变量计算它们的值而不是存储它们,并且它们以与计算属性相同的方式编写。通过编写getset来读取和写入原始变量,可以模拟所需的行为。

override func viewDidAppear(_ animated: Bool) {

    var reference: Bool {
        get { return test.shared.changeMe }
        set { test.shared.changeMe = newValue }
    }

    reference = true

    print("Reference: " + String(reference))
    test.shared.printValue()

}

注意:如果您需要访问reference之外的viewDidAppear,则将其声明为类的 compute属性(只是将其移出函数)。