【问题标题】:Access Dynamic Values from another Class in Swift 2从 Swift 2 中的另一个类访问动态值
【发布时间】:2016-03-05 17:42:04
【问题描述】:

这是问题的最简单形式:

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() 的第一个实例?

【问题讨论】:

    标签: swift class oop variables instance


    【解决方案1】:

    不是编写代码的方式,不。您需要为 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) 一个实例可以获得参考到它需要访问的另一个实例。每天照照镜子,对自己重复十遍:“code 存在于 class 中,但 action 完全是关于 实例。”

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2011-04-02
    相关资源
    最近更新 更多