@Bullstreak

Что такое селекторы и делегаты в Objective-C?

Учу objective c. Дошел до главы "Обратный вызов" ( книга Аарона Хиллегаса, переведенная на русский).
Есть три модели обратного вызова ( приемник-действие, вспомогательные объекты и центр оповещений).
Объясните подробно событийное программирование в objective c.
Я уже за****ся перечитывать одну и ту же главу в самоучителе. В интернете нашел только несвязные куски кода и т.п.
  • Вопрос задан
  • 8980 просмотров
Пригласить эксперта
Ответы на вопрос 4
deleted-mezhevikin
@deleted-mezhevikin
Вы какую-то сложную и ненужную книгу читаете, открывайте оф. документацию и изучаете на примерах.

Простыми словами:
Селектор - это метод который обработает какое-то действие

Например: у нас есть кнопка и мы указываем селектор с методом myButtonWasPressed, этот метод будет вызван по нажатию на кнопку.

[myButton addTarget:self
             action:@selector(myButtonWasPressed)
   forControlEvents:UIControlEventTouchUpInside];

- (void)myButtonWasPressed {
    // Do something about it
}


Делегат - это когда один класс работает внутри другого класса. Например у нас есть таблица UITableView и мы хотим чтобы она отображалась в контроллере MainViewController, мы устанавливаем для таблицы делегат MainViewController и теперь методы делегаты для построения ячейки таблицы будут вызываться в MainViewController
Ответ написан
@mr_cloud
iOS Developer
Delegates - https://vk.com/videos-58860049?section=search&z=vi...
Selectors - https://vk.com/videos-58860049?section=search&z=vi...

p.s.: не боятся, русский язык
Ответ написан
Комментировать
Fadmin
@Fadmin
попробуйте еще посмотреть видео на hexlet.org, там точно есть про делегаты.
Ответ написан
Комментировать
@Ne0nX
Прочитайте более подробно про паттерн Делегат.
В Objective-C он основан на базе протокола
@protocol
делегат реализует методы которые объект исполнитель не может реализовать сам.
На примере возьмем UITableView и его Делегат, который должен реализовывать обязательные методы.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

без этих методов от TableView не было бы смысла.

Selector - простыми словами это своеобразный указатель на метод.
[myButton addTarget:self
             action:@selector(myButtonWasPressed:)
   forControlEvents:UIControlEventTouchUpInside];

Этим кодом мы говорим что при нажатии на кнопку будет вызван метод myButtonWasPressed.

Про делегаты очень хорошо написано в книге "Сила Objective-C 2.0".
Советую Вам прочесть ее!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы