Задать вопрос
rotanev
@rotanev
iOS/Android Developer

Зачем protocol в Swift?

Высокопочтенные господа профи.

Можете обяснить в чем смысл делегирования в Swift через protocol, если выполнение тех же методов, того же UIView можно реализовать через добавление reference этого объекта в контроллер и выполняй его public методы сколько влезет?!?!
  • Вопрос задан
  • 809 просмотров
Подписаться 3 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    iOS-разработчик
    10 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
@Cassar
Может, вам стоит перечитать, зачем используется паттерн делегирования?
Ответ написан
@andrew8712
Методы UIView конечно же можно вызывать из контроллера, для этого делегирование и не нужно.
Делегирование нужно наоборот, сообщить контроллеру, что произошло какое-то событие у UIView (например, пользователь тапнул по строке UITableView) или запросить у контроллера какие-нибудь данные или значения (например, значение title для строки UIPickerView). При этом, держать reference на контроллер в UIView нельзя, т.к. возникнет retain cycle между UIView и UIViewController: каждый из них будет держать ссылку друг на друга, и они так никогда и не освободят память (тут можно почитать об этом подробнее: https://developer.apple.com/library/prerelease/ios...
Конечно, UIView может держать weak reference на контроллер, но в таком случае эта вьюха будет жестко привязана к данному контроллеру и будет работать только с ним. А протоколы для того и придуманы, что можно свой контроллер реализовать так, чтобы он удовлетворял протоколу, а вьюха уже работала бы с этим протоколом. В дальнейшем, если нужно будет работать с этой вьюхой из другого контроллера, достаточно просто реализовать в нем этот же протокол.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы