[英]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
。 我这么想的原因是我认为
self.observer
会起作用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.