Что такое и для чего нужен delegate в разработке приложений IOS?

Уже сломал всю голову, прошу объяснить что такое делегаты в приложении для чего они нужны и какой у них смысл, так же прошу объяснить что такое AppDelegate и для чего он нужен. Прошу объяснить все максимально простым языком потому что только недавно начал учить Swift, вот прям максимально для чайников. Задание спасибо
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 2
@iMaximus
Предлагаю для начала освоить google. Умение составлять поисковые запросы очень важно в нашей профессии :)
Для чего нужен AppDelegate?
Ответ написан
briahas
@briahas
ObjC, Swift, Python
Владислав Ресли (как мне кажется - Если вы до этого изучали С#, то это знание может сыграть с вами злую шутку в понимании делегатов в иос разработке. Почему? Потому что в отличии от С# в иос разработке они декларативны. За ними не стоят специяальные конструкции и объявления.)

Если вы создали классы "Зритель" и "Проигрыватель" и вам надо чтобы "зритель" знал о событии окончания проигрывания, то вы в классе "Проигрыватель" создаете пропертю c типом"Пользователь", чтобы, когда надо, вызвать по этой проперти нужный метод (пусть будет didEndPlaying()).

Получается, что, по логике, проигрыватель делегирует пользователю совершить действия по конкретному событию. Получается (в моем примере), зритель - делегат проигрывателя. И, чтобы, при просмотре кода зразу понимать эту логическую цепочку, принято подобные проперти именовать delegate (в моем случае такая проперти будет в классе Проигрыватель).

А так как по конкретному классу обращаться не прааааавильно, но создают протокол "ДелегатПроигрывателя" (на инглише бы было PlayerDelegate, уже знакомей звучит, не правдали [AppDelegate итп]) которому и должен будет удовлетворять любой кто захочет быть делегатьм Проигрывателя.

код:
weak var delegate: PlayerDelegate?,

...
    private func onReachingEnd() {
        delegate?.didEndPlaying()
    }


А вот почему делегат должен быть weak и опшионал, это я оставляю узнать самому.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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