繁体   English   中英

MVVM 设计模式中的观察者方法 swift?

[英]Observer method in MVVM Design Pattern swift?

我对您在下面看到的代码有一个疑问。

class Bindable<T> {
    var value: T? {
        didSet {
            observer?(value)
        }
    }

    var observer: ((T?) -> ())?

    func bind(observer: @escaping (T?) -> ()) {
        self.observer = observer // there is the place ı can not understand
        observer?(value)
    }
}

为什么我们这样做self.observer = observer 我希望我们应该使用observer = self.observer而不是self.observer = observer 我这么想的原因是我认为

  1. 我们改变了价值
  2. self.observer会起作用
  3. 当我们调用func bind()因为参数observer将等于self.observer ,一切都需要完美地工作。

但是,我错过了什么?

self.observer = observer意味着你将这个 function 分配给 class 属性observer

第一个self.observer是你在var observer: ((T?) -> ())?

第二个observer是你通过 function func bind(observer: @escaping (T?) -> ())

再举一个例子你会更好理解。

class Person {
    var age: Int = 0

    func setAge(age: Int) {
        self.age = age
    }

    // to let you understand better
    // if the param is `anotherAge`
    // `self.` is not necessary
    func setAge2(anotherAge: Int) {
        age = anotherAge
    }
}

这里的self.age = age与您的self.observer = observer没有什么不同,都为 class 属性分配了一个值。 唯一的区别是您的observer也是 function。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM