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

Примечание. Мы должны использовать 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/

[email protected]