Я пытаюсь догнать эту крутость программирования, ориентированного на протокол, с помощью Swift 2, но в настоящее время я совершенно потерян.
Я пытаюсь применить теорию к практическим случаям использования, поэтому давайте начнем с самого очевидного:
Допустим, у меня есть UITextField
, и я хочу иметь много протоколов (например, телефонный, числовой, lengthLimited…), которые соответствуют UITextFieldDelegate
и переопределяют метод textField:shouldChangeCharactersInRange:replacementString
для достижения желаемого поведения.
Возможно ли вообще иметь файл «Extensions.swift» с этим расширением и назначать нужные протоколы UITextField
(например, числовой, lengthLimited)? Это было бы очень полезно. Если да, то есть ли способ назначить протокол, скажем, розетке UITextField
, или мне нужно создать подкласс UITextField
и заставить его соответствовать нужным протоколам? Если это так, то я не вижу большого преимущества в использовании расширений протоколов по сравнению со старыми добрыми подклассами.