最近看到这么一个博客
讲到了通过Enum
来把ViewController
变成一个状态机,通过状态的变化来确定或者执行对应的操作
1 | class ProductListViewController: UIViewController { |
以上是博客中的一段代码,我觉得这是很好的一个思路,之前我们如果要做刷新类的操作(loading)时,可能
在viewDidLoad
里面要加开始刷新加载数据,在文件其他的方法中再次调用来实现下拉刷新或者其他条件触发
的刷新操作,借用以前看过的一个说法就是“起飞点有好多,着陆点也有好多”,不便于管理。
原博客中还说了这就是MVVM,想了一下确实是这样,不过平常见的多的都是绑定,这里需要在state didSet
里面调用会牵扯到对应状态改变的方法。
原作者确实很厉害,不过当然不只只是来夸原作者的。
原作者只是给出一个最简单的实现思路,实际使用中我觉得应该把状态的Enum
定义抽出来,比如:
1 | enum LoadState<T> { |
大概意思就是所有该类型的ViewController
通过实现对应的protocol
持有enum
,通过protocol
名字或者enum
定义来增强可读性