Во-первых, простите за непонятный заголовок! Я не мог найти способ лучше описать мою проблему.
Сейчас я изучаю 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
и ничего больше.
Не могли бы вы объяснить, почему нам нужно ТОЛЬКО связывание без изменения его значения?
Заранее большое спасибо!