从 Swift 中的另一个 Class 访问动态值 2

Access Dynamic Values from another Class in Swift 2

这是问题的最简单形式:

class A {
    var q: Bool = false

    func setq() {
        q = true
        print("A: \(q)")
    }

    func getq() -> Bool {
        return self.q
    }
}

class B {
    init() {
        print("B: \(A().getq())")
    }
}

A().setq()
B()

我无法访问 q,其中 q = true 因为 B() 中的 A()A().

的新实例

有什么方法可以访问 B()A() 的第一个实例吗?

不是您 编写代码的方式,不是。您需要为 B 提供一种方法,以便您 将其交给 一个 A 实例。例如,init 可能采用 A 参数。

目前你甚至不能这样做,因为你你自己没有 A 实例。您在代码的第一行 (A().setq()) 中创建了一个 A 实例,然后您只需丢弃该实例。 (事实上​​ ,我很惊讶编译器没有警告你。)所以不仅 B 没有引用 A 实例,而且 you 也没有引用 A实例.

这里有一个可能的更正:

class B {
    init (theA:A) {
        print("B: \(theA.getq())")
    }
}

let anA = A()
anA.setq()
B(theA:anA)

这就是 OOP 的本质。这一切都是关于安排事情,以便 (1) 你有实例,(2) 这些实例 寿命足够长 有用,以及 (3) 一个实例可以 得到一个引用 到它需要访问的另一个实例。每天照镜子,对自己重复十遍:"The code lives in the class, but the action is all about instances."