Как предотвратить вызов Swift Propertyobservers при изменении переменных в наблюдаемом объекте

Во время тестирования я обнаружил это странное поведение:

var viewModel: ViewModel? {
    didSet {
        viewModel.delegate = self
    }
}

view.viewModel?.delegate = MockDelegate

Этот код всегда приводит к viewModel.delegate быть взглядом.

Есть ли способ предотвратить это?

1 ответ

Сначала проверьте, установлена ​​ли viewModel. view.viewModel = model установит делегата как ViewModelmodel объект. затем view.viewModel!.delegate = MockDelegate переопределит объект делегата.

var viewModel: ViewModel? {
    didSet {
        viewModel.delegate = self // this is the issue.
    }
}

view.viewModel = model
// this line should override the delegate instance from self to `MockDelegate`
view.viewModel!.delegate = MockDelegate
Другие вопросы по тегам