использовать архитектуру VIPER с классом или структурой в быстром темпе?

Когда мы хотим написать проект с архитектурой 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? в поле зрения или без слабого?

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


person Sajjad    schedule 08.05.2020    source источник


Ответы (1)


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

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

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

person Tal Sahar    schedule 08.05.2020
comment
вы сказали, что рекомендуется использовать struct по умолчанию. но после этого вы сказали, что это плохая практика. так? - person Sajjad; 09.05.2020
comment
я думаю, что мы должны использовать класс для View, поэтому в результате вашего слова мы также должны использовать класс для Presenter из-за плохой практики.... все архитекторы гадюк, связанные с Presenter, поэтому все гадюки будут классом. да? - person Sajjad; 09.05.2020