iPhone Objective-C: equivalenza nella sintassi
venerdì 19 giugno, 2009La sintassi con le parentesi quadre in Objective-C è uno dei motivi di maggior frustazioni per chi proviene da altri linguaggi (ad oggetti). Tuttavia, fatta l'abitudine, ci si rende conto di quanto il codice diventi ugualmente leggibile con questa il mix della sintassi classica e quella più spiccatamente Smalltalk. Ad esempio vediamo come la stessa procedura può essere scritta in entrambe le sintassi. Prendiamo l'inizializzazione di un UIAlertView:
-
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo"
-
message:@"Messaggio"
-
delegate:self
-
cancelButtonTitle:@"Annulla"
-
otherButtonTitles:@"Ok",nil];
-
myAlert.tag = 1;
-
[myAlert show];
-
[myAlert release];
L'impostazione del tag potavamo farla anche così:
-
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo"
-
message:@"Messaggio"
-
delegate:self
-
cancelButtonTitle:@"Annulla"
-
otherButtonTitles:@"Ok",nil];
-
[myAlert setTag:1];
-
[myAlert show];
-
[myAlert release];
Stessa cosa in lettura durante l'evento:
-
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
-
if( alertView.tag == 1 ) { // ...
-
// oppure
-
if ([alertView tag] == 1) { // ...
-
}
Nota bene: non tutte le proprietà o metodi hanno questa duplice sintassi. Nel caso dell'
UIAlertViewabbiamo questa doppia funzionalità. Per altri oggetti o in altri casi, invece, potrebbero funzionare una sola delle due... ma non chiedetevi perchè (dipende da come gli sviluppatori hanno definito l'interfaccia).










19

Non ci sono commenti per questo Post
Lascia un commento