casualfatboy
@casualfatboy

Objective C — что означает delegate: self?

Создается объект UIActionSheet в параметрах которого указывается delegate: self

Что конкретно это означает? Куда именно отправляется сообщение в этом случае ?
  • Вопрос задан
  • 502 просмотра
Решения вопроса 1
DaskOFF
@DaskOFF
iOS Developer
Прочитал оба ответа, и если бы я не был с этим знаком, то я бы ничего не понял.

Скорей всего, вы показываете UIActionSheet в каком-либо UIViewController. Устанавливая delegate:self (а в некоторых классах это задается не в конструкторе, а вручную), вы говорите, что вы будете реализовывать какое-то свое поведение на взаимодействие с данным объектом.

Когда вы устаналиваете делешатом какой-либо объект, то этот объект чаще всего должен реализовывать хотя бы один из методов делегата, которые задаются в протоколах, у UIActionSheet это UIActionSheetDelegate.
Т.е. ваш UIViewController будет описан следующим образом
@ interface MyController : UIViewController < UIActionSheetDelegate >

Чтобы не лезть в документацию все методы протокола для удобства начинаются с actionSheet. Все, что вам нужно это начать вводить начало функции "- actionSh…" далее вам уже покажут все методы, которые так начинаются и будет их краткое описание.

Делегирование очень важно и часто встречается при разработке, поэтому советую почитать про них у Apple
https://developer.apple.com/library/ios/documentat...
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@feniksqip
Что "берет на себя задачу X" на себя (т.е. указываем наш UIView). Наш вью несет ответсвенность за происходящее !
Ответ написан
Комментировать
@iFamily
Expert in Server-Side-Swift and iOS development
self - это текущий класс, например это может быть текущий UIVIewController.
Соответственно когда ты говоришь, что делегатом для UIActionSheet является self, это значит что в текущем классе нужно "прописать"/добавить методы из UIActionSheetDelegate и они будут отрабатывать.

А вообще используйте уже UIAlertController, а то UIActionSheet устарел.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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