2011-08-31 5 views
5

Veo dos enfoques para manejar los objetos del remitente en las declaraciones de IBAction. La primera es así:Remitente de transmisión a IBAction como identificación o clase específica

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

Otro parece más fácil:

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

lo general optar por la versión 2. alguna razón en particular a preferir un estilo sobre otro, si se sabe que sólo un botón se realiza estar enviando a este método?

puedo ver que la versión 1 es bueno si nada puede ser un emisor, como un botón o interruptor o control deslizante, etc, pero si usted está buscando propiedades como UIButtontag no va a hacer mucha diferencia si su remitente no es un UIButton. Entonces la versión 2 parece mucho más directa.

Sólo quería ver si me falta una razón obvia para preferir la versión 1.

+0

no hace ninguna diferencia, pero a veces se está utilizando la misma acción para muchos objetos diferentes y utilizando la etiqueta para seleccionar cuál de ellas es la correcta, por lo que realmente depende de sus necesidades. Interface Builder simplemente no le importa. –

Respuesta

4

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

Incluso con mayor frecuencia no se me hace tener que acceder al remitente, por lo que sólo tiene que utilizar:

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

Estoy de acuerdo con esto. A menos que tenga una necesidad de responder, simplemente deje al remitente apagado. –

Cuestiones relacionadas