1

当我们想用 VIPER 架构编写项目时,我们应该使用 Struct 或 Class 来定义PresenterorInteractor或 ...

因为我们应该使用Classfor View( 因为继承自UIViewcontroller),所以如果我们Presenter使用 Strcut 编写,性能或内存泄漏或......会发生什么?

class HomeView: UIViewController {

    var presenter: HomeViewPresenterProtocol?

    override func viewDidLoad() {
        super.viewDidLoad()

        ...
    }
}


struct HomePresenter {

    var view: HomeViewProtocol?

    ...
}

我们应该使用weak var presenter: HomeViewPresenterProtocol?in view还是不使用weak?

如果我们在 VIPER 中使用 struct 会发生什么?

4

1 回答 1

1

无论 VIPER 架构如何,如果您需要类的特定功能(例如您提到的继承),建议默认使用 struct 并使用类。此外,如果结构包含任何引用类型,则使用它是一种不好的做法。

在您的情况下,我建议您使用一个类,因为 VIPER Interpreter 和 Presenter 通常是有状态的并且包含引用类型。

要了解更多何时使用结构或类,我建议您查看以下文章: https ://medium.com/commencis/stop-using-structs-e1be9a86376f

于 2020-05-08T20:54:25.523 回答