использовать архитектуру VIPER с Class или Struct быстро? - PullRequest
0 голосов
/ 08 мая 2020

Когда мы хотим написать проект с архитектурой VIPER, мы должны использовать Struct или Class при определении Presenter или Interactor или ...

Потому что мы должны использовать Class для View (потому что наследования от UIViewcontroller), поэтому, если мы напишем Presenter с помощью Strcut, что произойдет с перфомансом или утечкой памяти или ...?

class HomeView: UIViewController {

    var presenter: HomeViewPresenterProtocol?

    override func viewDidLoad() {
        super.viewDidLoad()

        ...
    }
}


struct HomePresenter {

    var view: HomeViewProtocol?

    ...
}

мы должны использовать weak var presenter: HomeViewPresenterProtocol? с учетом или без weak?

что будет, если мы используем структуру в VIPER?

1 Ответ

0 голосов
/ 08 мая 2020

Независимо от архитектуры VIPER, рекомендуется использовать struct по умолчанию и использовать класс, если вам нужны специфические c особенности класса, такие как наследование, которое вы упомянули. Кроме того, плохая практика - использовать структуру, если она содержит какой-либо ссылочный тип.

В вашем случае я рекомендую вам использовать класс, потому что интерпретатор и докладчик VIPER обычно сохраняют состояние и содержат ссылочные типы.

Чтобы узнать больше, когда использовать структуру или класс, я рекомендую вам проверить следующую статью: https://medium.com/commencis/stop-using-structs-e1be9a86376f

...