Форум программистов, компьютерный форум CyberForum.ru

Селектор и аргумент функции - Objective-C

Войти
Регистрация
Восстановить пароль
 
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
19.10.2014, 02:55     Селектор и аргумент функции #1
Objective-C
1
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewTouched:)];
Objective-C
1
2
3
4
- (void)scrollViewTouched:(UITapGestureRecognizer *)gesture
{
    NSLog(@"touch at %f", [gesture locationInView:imageGallery].x);    
}
Запутался с данной конструкцией.
self в первой строке указывает на tap?
откуда scrollViewTouched берет аргументы?
и как это все в целом работает "под капотом"?

Заранее спасибо
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
residentkms
21 / 21 / 8
Регистрация: 20.10.2013
Сообщений: 138
Завершенные тесты: 1
19.10.2014, 07:42     Селектор и аргумент функции #2
Цитата Сообщение от lowlol Посмотреть сообщение
Запутался с данной конструкцией.
self в первой строке указывает на tap?
откуда scrollViewTouched берет аргументы?
и как это все в целом работает "под капотом"?
Заранее спасибо
self указывает на класс в котором реализован метод селектора.
На счёт откуда берутся аргументы, самому интересно.
Вероятно, этот метод объявлен в каком то протоколе.
noname_club
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 577
19.10.2014, 10:43     Селектор и аргумент функции #3
откуда scrollViewTouched берет аргументы?
UITapGestureRecognizer вызывает под капотом

Objective-C
1
 [_target peformSelector:_action withObject: self]; // где self = UITapGestureRecognizer
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
19.10.2014, 14:04  [ТС]     Селектор и аргумент функции #4
residentkms, мб на экземпляр класса?
P.S метод я писал сам и ни в каком протоколе он не объявлен

Добавлено через 1 минуту
noname_club, откуда этот код?
noname_club
 Аватар для noname_club
102 / 90 / 9
Регистрация: 01.05.2013
Сообщений: 577
19.10.2014, 14:05     Селектор и аргумент функции #5
откуда этот код?
Из под капота
lowlol
2 / 2 / 2
Регистрация: 02.12.2012
Сообщений: 102
19.10.2014, 18:50  [ТС]     Селектор и аргумент функции #6
noname_club, не могли бы вы пошагово расписать что, в какой момент и откуда вызывается, начиная с тапа?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2014, 12:12     Селектор и аргумент функции
Еще ссылки по теме:

Аргумент функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Melzas
 Аватар для Melzas
38 / 38 / 4
Регистрация: 20.07.2011
Сообщений: 88
21.10.2014, 12:12     Селектор и аргумент функции #7
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от lowlol Посмотреть сообщение
self в первой строке указывает на tap?
В методе объекта (который начинается с -) self всегда указывает на самого себя (на текущий объект). В методе класса (начинается с +) self указывает непосредственно на класс.

Цитата Сообщение от lowlol Посмотреть сообщение
откуда scrollViewTouched берет аргументы
Все наследники UIControl и UIGestureRecognizer передают события, отправляя себя в качестве аргумента по конвенции. Т.е. селектор для реакции на событие всегда выглядит как:
Objective-C
1
-(void)onAction:(id)sender
id можно заменить на нужный класс, при необходимости.
Цитата Сообщение от lowlol Посмотреть сообщение
не могли бы вы пошагово расписать что, в какой момент и откуда вызывается, начиная с тапа?
Тут особо и расписывать нечего. При тапе внутри UITapGestureRecognizer проходит по всем target и вызывает на них переданный селектор (в этом случае scrollViewTouched: ), передавая себя в качестве аргумента. Код есть выше, только выполняется он в цикле, так как целей может быть несколько.
Yandex
Объявления
21.10.2014, 12:12     Селектор и аргумент функции
Ответ Создать тему
Опции темы

Текущее время: 07:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru