ios 创建一个configure方法来传入视图模型与通过视图的init传入视图模型相比有什么好处?

fiei3ece  于 2023-01-14  发布在  iOS
关注(0)|答案(1)|浏览(104)

我见过两种模式,其中视图有一个视图模型,可以通过视图的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
    }
}
flvlnr44

flvlnr441#

一般来说,如果你可以在初始化器中设置一个对象的属性,最好这样做,因为你不需要属性是可选的(或者更糟的是,没有意义的默认值,比如0代表int,false代表bool,等等)。
Swift的明确初始化保证也让你受益匪浅,它可以确保你不会忘记从初始化器中设置任何属性,这与configure(viewModel:)方法形成对比,后者你可能会忘记调用。
然而,有时候这是不可能的,比如在使用Storyboards时(它为您初始化视图,您没有机会向初始化器传递任何参数),或者在构建要回收的视图时(比如表格视图中的单元格)。

相关问题