Uso de * en la sintaxis del objetivo C

Estoy luchando un poco con alguna sintaxis objetiva de c. ¿Alguien puede explicar el uso de * en el siguiente método de instancia?

- (IBAction)sliderChanged:(id)sender{
    UISlider *slider = (UISlider *)sender;
}

Me doy cuenta de que estamos creando una variable escrita como UISlider y luego configurándola como remitente una vez que se lanza como UISlider. Sin embargo, no entiendo para qué son los * y por qué

UISlider slider = (UISlider)sender; 

no funciona

Respuestas a la pregunta(4)

Su respuesta a la pregunta