Обвязка в МВВМ без стрельбы - PullRequest
0 голосов
/ 25 апреля 2018

Во-первых, простите за непонятный заголовок! Я не мог найти способ лучше описать мою проблему.

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

Заранее большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...