Transmitir remitente a IBAction como identificación o class específica

Veo dos enfoques para manejar objects de remitente en sentencias IBAction. El primero se ve así:

-(IBAction)buttonPressed:(id)sender{ UIButton*someButton=(UIButton*)sender; //do something with someButton.tag or whatever } 

Otra parece más fácil:

  -(IBAction)buttonPressed:(UIButton*)sender{ //do something with sender.tag or whatever } 

En general, opto por la versión 2. ¿Alguna razón particular para preferir un estilo sobre el otro, si sabes que solo se enviará un button a este método?

Puedo ver dónde la versión 1 es buena si algo puede ser un remitente, como un button, un interruptor o un control deslizante, etc. Pero si está buscando properties de UIButton como tag , no hará mucha diferencia si su remitente no es un UIButton . Entonces, la versión 2 parece mucho más sencilla.

Solo pensé en ver si me falta una razón obvia para preferir la versión 1.

No veo ningún problema al usar la segunda versión. Usualmente utilizo la segunda versión, solo usando la primera versión si el remitente puede ser más de un tipo de object. Entonces, si el método necesita saber qué tipo de object, el método puede consultar al remitente antes de enviar el remitente a un tipo particular.

Aún más frecuentemente no encuentro la necesidad de acceder al remitente, así que solo uso:

 - (IBAction)buttonPressed { // Do something. }