首页 > 解决方案 > 我可以在 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))
    }
}

标签: swift

解决方案


没有对变量的引用,但您可以使用Computed Variable来模拟行为。

计算变量计算它们的值而不是存储它们,它们的编写方式与计算属性相同。通过写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,则将其声明为类上的计算属性(只需将其移到函数之外)。


推荐阅读