2011-08-31 9 views
5

Vedo due approcci per la gestione degli oggetti mittente nelle istruzioni IBAction. Il primo si presenta così:Invio del mittente a IBAction come ID o classe specifica

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

un altro sembra facile:

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

io in genere optare per la versione 2. Qual è il motivo particolare per preferire uno stile sopra l'altro, se si sa che solo un pulsante sarà stai inviando a questo metodo?

posso vedere dove la versione 1 è buona se nulla può essere un mittente, come un bottone, o un interruttore o cursore, ecc Ma se siete alla ricerca di immobili come UIButtontag non farà molta differenza se il tuo mittente non è un UIButton. Quindi la versione 2 sembra molto più semplice.

Ho pensato di vedere se mi manca una ragione evidente a preferire la versione 1.

+0

non fa alcuna differenza, ma a volte si utilizza la stessa azione per molti oggetti diversi e utilizzando la tag per selezionare quale di essi è quello giusto, quindi dipende davvero dalle tue esigenze. Interfaccia Builder proprio non gli interessa. –

risposta

4

Non vedo alcun problema utilizzando la seconda versione. Di solito uso la seconda versione, usando solo la prima versione se il mittente può essere più di un tipo di oggetto. Quindi, se il metodo deve sapere quale tipo di oggetto, il metodo può interrogare il mittente prima di trasmettere il mittente a un particolare tipo.

Ancora più spesso trovo nessun bisogno di accedere al mittente, quindi mi basta usare:

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

Sono d'accordo con questo. A meno che tu non abbia la necessità di rispondere, esci dal mittente. –

Problemi correlati