首先,抱歉标题不清楚!我找不到更好地描述我的问题的方法。
我现在正在学习MVVM,我有一个问题,因为我很难理解它。
我有一个班级Bindable
class Bindable<T> {
typealias Listener = ((T) -> Void)
var listener: Listener?
var value: T {
didSet {
listener?(value)
}
}
init(_ v: T) {
self.value = v
}
func bind(_ listener: Listener?) {
self.listener = listener
}
func bindAndFire(_ listener: Listener?) {
self.listener = listener
listener?(value)
}
}
正如您所见,我有bind
和bindAndFire
方法。我完全理解为什么我们使用bindAndFire
,因为它更改value
参数以便我们可以使用它,但我唯一不理解的是为什么我们有时需要使用bind
方法?
例如:
viewModel?.showLoadingHud.bind {
PKHUD.sharedHUD.contentView = PKHUDSystemActivityIndicatorView()
$0 ? PKHUD.sharedHUD.show() : PKHUD.sharedHUD.hide()
}
它只会设置listener
参数,而不会设置其他内容。
你能解释为什么我们只需要绑定而不改变它的价值吗?
非常感谢你!