rotanev
@rotanev
iOS/Android Developer

Зачем protocol в Swift?

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

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

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

Войти через центр авторизации
Похожие вопросы
от 160 000 до 220 000 ₽
Rollersoft Белгород
от 108 000 до 150 000 ₽
МТС Москва
от 140 000 до 250 000 ₽
01 окт. 2020, в 21:13
600 руб./в час
01 окт. 2020, в 19:53
60000 руб./за проект
01 окт. 2020, в 19:40
15000 руб./за проект