Рассмотрим ситуацию, когда у нас есть много контроллеров представлений с похожим набором функций и переменных, которые необходимо определить в каждом новом классе контроллеров представлений. Копировать и вставлять переменные и функции — громоздкая задача, и есть шанс пропустить некоторые из них.
Примечание. Мы должны использовать SOC, вызывающую обеспокоенность, через MVVM / Viper. Но если код уже есть, то мы можем пойти и выполнить работу с помощью этого использования.
А вот и быстрый протокол как спаситель.
Мы определяем общедоступный протокол с желаемыми функциями и переменными и просто расширяем новый класс контроллера представления с помощью этого протокола, который мы только что определили. Компилятор автоматически выдаст средство исправления ошибок и добавит эти функции и переменные.
protocol BoilerPlate { var someImpVariable : String {get set} func viewDidLoad() func viewWillAppear() func viewWillDisappear(_ animated: Bool) func didReceiveMemoryWarning() func checkUnsycData() func setupDataDownlaodingNotification() func setupRefreshControl() } // class MyViewController : BoilerPlate{ // error fixer will show error 'MyViewController' does not conform to protocol 'BoilerPlate' //After adding the stubs of the protocol, it adds the methods and vars from the protocol }
Если нет специальной реализации для каждого метода, т.е. одинаковые реализации методов во всех классах, то можно добавить расширение протокола и Виола!!, просто расширить протокол и все.
extension BoilerPlate{ // Add definition of the methods }
Это все на сегодня. Попробуйте использовать это любым возможным способом и не забудьте поставить ❤️, а также прокомментировать и поделиться своими мыслями по этому поводу.
Посетите мой веб-сайт, чтобы увидеть приложения, которые я создал до сих пор http://www.linklyapps.in/