我见过两种模式,其中视图有一个视图模型,可以通过视图的init传入视图模型,也可以使用configure方法接收视图模型并配置属性,这些模式的优缺点是什么?
即
struct ViewModel {
let titleLabel: String
let subtitleLabel: String
}
初始化方法:
class View: UIView {
let viewModel: ViewModel
init(viewModel: viewModel) {
self.viewModel = viewModel
}
}
配置方法:
class View: UIView {
init() {}
configure(viewModel: ViewModel) {
// configuring view properties
}
}
1条答案
按热度按时间flvlnr441#
一般来说,如果你可以在初始化器中设置一个对象的属性,最好这样做,因为你不需要属性是可选的(或者更糟的是,没有意义的默认值,比如0代表int,false代表bool,等等)。
Swift的明确初始化保证也让你受益匪浅,它可以确保你不会忘记从初始化器中设置任何属性,这与
configure(viewModel:)
方法形成对比,后者你可能会忘记调用。然而,有时候这是不可能的,比如在使用Storyboards时(它为您初始化视图,您没有机会向初始化器传递任何参数),或者在构建要回收的视图时(比如表格视图中的单元格)。