Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 要用作ViewModel的扩展与类_Ios_Swift_Model View Controller_Mvvm_Architecture - Fatal编程技术网

Ios 要用作ViewModel的扩展与类

Ios 要用作ViewModel的扩展与类,ios,swift,model-view-controller,mvvm,architecture,Ios,Swift,Model View Controller,Mvvm,Architecture,这些方法中的每一种都有哪些优点和缺点,这些优点和缺点与创建负责视图配置以减小控制器文件大小的文件有关 主要重点是: 记忆 演出 测试 可用性 这是最简单的、能够工作的示例来演示问题,但是当使用许多方法呈现许多视图时,在比较Extension&ViewModel类时,上面的关注点是否会改变 提醒:ViewModel类或扩展名将放置在单独的文件中 视图模型方法 class VC: UIViewController { lazy var viewModel: ViewMod

这些方法中的每一种都有哪些优点和缺点,这些优点和缺点与创建负责视图配置以减小控制器文件大小的文件有关

主要重点是:

  • 记忆
  • 演出
  • 测试
  • 可用性
这是最简单的、能够工作的示例来演示问题,但是当使用许多方法呈现许多视图时,在比较Extension&ViewModel类时,上面的关注点是否会改变

提醒:ViewModel类或扩展名将放置在单独的文件中

视图模型方法

    class VC: UIViewController {
        lazy var viewModel: ViewModel {
            return (main: self)
        }()

        ovverride viewDidLoad() {
            super.viewDidLoad()

            initializeUI()
        }


        func initializeUI() {
            viewModel.configureView()
        }
    }



    class ViewModel {
        private let main: UIViewController

        init(main: UIViewController) {
            self.main = main
        }

        func configureView() {
            main.view.backgroundColor = UIColor.blue
        }
    }
扩展方法

    class VC: UIViewController {
        lazy var viewModel: ViewModel(main: self)

        ovverride viewDidLoad() {
            super.viewDidLoad()

            initializeUI()
        }


        func initializeUI() {
            configureView()
        }
    }

    extension VC {
        func configureView() {
            main.view.backgroundColor = UIColor.blue
        }
    }

@Paulw11我扩展了类VC(我自己的自定义类),而不是整个UIViewControllerclass@Paulw11对不起,我只是想知道我错了吗,因为我看不到其他UIViewController类中的方法是可访问的,所以我认为扩展方法是可以接受的。