Создание слайдеров - PullRequest
       16

Создание слайдеров

0 голосов
/ 12 декабря 2011

Я использую чей-то код для моего слайдера.

Его код выглядит так

UISlider *slider = (UISlider *)sender;
int number = [slider value];
NSString *string = [NSString stringWithFormat:@"%i", number];
label.text = string;

Показывает значение ползунка от 0 до 100.

Это имеет смысл, за исключением того, что я запутался с первой строкой кода, которая является частью после =, (UISlider *) часть отправителя.

UISlider *slider = (UISlider *)sender;

Если я правильно понимаю, он указывает UISlider на отправителя и сохраняет его в экземпляре слайдера.

Я думаю, мой вопрос, что здесь произошло? Был ли выделен экземпляр ползунка UISlider * ... что происходит здесь за кулисами, и это можно сделать и с другими классами?

Спасибо всем, кто мешает ответить.

Ответы [ 2 ]

2 голосов
/ 12 декабря 2011

Насколько я понимаю, приведенный выше код происходит, когда событие происходит с каким-либо объектом UISlider, и, соответственно, этот код находится в методе 'callback'. Тогда в этот момент объект уже существует, вам больше не нужно выделять для него память (это тот объект, который фактически вызвал этот метод); и все, что делает этот парень, это приведение параметра 'sender' (который является стандартным для любого метода обратного вызова (IBAction?)) к типу UISlider, будучи уверенным, что он действительно работает с объектом этого класса. Таким образом он говорит компилятору: «Послушайте, я знаю, что это объект UISlider. Пожалуйста, позвольте мне поработать с ним стандартно для слайдеров».

Поправьте меня, пожалуйста, ребята, если я где-то ошибаюсь.

1 голос
/ 12 декабря 2011

Насколько я знаю, отправитель (в данном случае) отвечает за событие, так как оно вызывает событие, скорее всего, IBAction.Обычно отправитель является нетипизированным объектом, который может представлять любой тип объекта.В этом случае программист уверен, что его вызовет объект UISlider.Таким образом, приведение типов выполняется для получения объекта типа UISlider.Это, например, также может быть сделано для UIButton, где эта строка может быть заменена на UIButton *button = (UIButton *)sender;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...