iPhone Objective-C: equivalenza nella sintassi

venerdì 19 giugno, 2009

La 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:

Objective-C:
  1. UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo"
  2.                                             message:@"Messaggio"
  3.                                             delegate:self
  4.                                             cancelButtonTitle:@"Annulla"
  5.                                             otherButtonTitles:@"Ok",nil];
  6. myAlert.tag = 1;
  7. [myAlert show];
  8. [myAlert release];

L'impostazione del tag potavamo farla anche così:

Objective-C:
  1. UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"Titolo"
  2.                                             message:@"Messaggio"
  3.                                             delegate:self
  4.                                             cancelButtonTitle:@"Annulla"
  5.                                             otherButtonTitles:@"Ok",nil];
  6. [myAlert setTag:1];
  7. [myAlert show];
  8. [myAlert release];

Stessa cosa in lettura durante l'evento:

Objective-C:
  1. - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
  2.     if( alertView.tag == 1 ) { // ...
  3.     // oppure
  4.     if ([alertView tag] == 1) { // ...
  5. }

Nota bene: non tutte le proprietà o metodi hanno questa duplice sintassi. Nel caso dell'UIAlertView abbiamo 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).

Post correlati

Questo articolo ti è stato utile?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Non ci sono commenti per questo Post

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre>         // blocco generico
[code][/code]       // blocco generico
[as][/as]           // Actionscript
[css][/css]         // CSS Style Sheet
[html][/html]       // HTML
[js][/js]           // Javascript
[objc][/objc]       // Objective-C
[php][/php]         // PHP
[sql][/sql]         // SQL