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

Зачем protocol в Swift?

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

Можете обяснить в чем смысл делегирования в Swift через protocol, если выполнение тех же методов, того же UIView можно реализовать через добавление reference этого объекта в контроллер и выполняй его public методы сколько влезет?!?!
  • Вопрос задан
  • 806 просмотров
Подписаться 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 на контроллер, но в таком случае эта вьюха будет жестко привязана к данному контроллеру и будет работать только с ним. А протоколы для того и придуманы, что можно свой контроллер реализовать так, чтобы он удовлетворял протоколу, а вьюха уже работала бы с этим протоколом. В дальнейшем, если нужно будет работать с этой вьюхой из другого контроллера, достаточно просто реализовать в нем этот же протокол.
Ответ написан
Ваш ответ на вопрос

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

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