在测试时我发现了这种奇怪的行为:
var viewModel: ViewModel? {
didSet {
viewModel.delegate = self
}
}
view.viewModel?.delegate = MockDelegate
此代码将始终导致viewModel.delegate
成为视图。
有什么办法可以防止这种情况发生吗?
在测试时我发现了这种奇怪的行为:
var viewModel: ViewModel? {
didSet {
viewModel.delegate = self
}
}
view.viewModel?.delegate = MockDelegate
此代码将始终导致viewModel.delegate
成为视图。
有什么办法可以防止这种情况发生吗?
首先检查是否设置了 viewModel。view.viewModel = model
将委托设置为ViewModel
model
对象。然后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