Я думаю, что путаница возникает из-за использования (id) в:
- (IBAction)sliderChanged:(id)sender{
UISlider *slider = (UISlider *)sender;
}
Objective C имеет тип id , который более или менее эквивалентен (NSObject *). По сути, он может указывать на любой тип объекта Objective C. Итак, на самом деле этот код гласит:
- (IBAction)sliderChanged:(NSObject*)sender{
UISlider *slider = (UISlider *)sender;
}
Больше или меньше. Поскольку мы (программист) знаем, что объектом-отправителем является UISlider, мы приводим этот объект к (UISlider *) при присвоении его значения ползунку UISlider *.