Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

atomic e nonatomic in Objective-C

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

atomic e nonatomic in Objective-C

Messaggioda bravebrain » dom lug 26, 2009 6:28 pm

Ciao a tutti.
Anche se non sono più giovanissimo, sto provando a scrivere semplici applicazioni per Mac OS X e per iPhone. Ho cominciato a esercitarmi con il C, per poi puntare su Objective-C. Sono proprio agli inizi, ma la voglia di imparare non mi manca.
Leggendo le guide Apple e vari tutorial, ho capito che per dichiarare la creazione dei metodi setter e getter relativi a un oggetto istanza, a titolo di esempio si potrebbe scrivere una cosa del genere:

@property (nonatomic, retain) MyViewController *myViewController;

In questo modo dichiaro che con @synthesize saranno implementati i metodi accessori getter e setter, che consentiranno di leggere e modificare il valore dell'oggetto (appartenente alla classe MyViewController) a cui punta *myViewController.
L'aver specificato la property retain farà sì che nel setter possa avvenire una cosa del genere:

- (void)setMyViewController:(MyViewController *)aViewController {
if (myViewController != aViewController) {
[myViewController release];
myViewController = [aViewController retain];
}
}

In pratica:

1) se il vecchio oggetto myViewController è diverso dal nuovo oggetto aViewController, la memoria allocata per il vecchio oggetto viene liberata e al puntatore *myViewController può essere assegnato il nuovo oggetto allocato;
2) il messaggio "myViewController = [aViewController retain]" fa sì che il puntatore *myViewController possa riferirsi all'oggetto aViewController, il cui retain count viene portato a 2 con retain;
3) se il creatore del nuovo oggetto (allocato dinamicamente) rilascia aViewController con un release, tale oggetto non viene deallocato dalla memoria (il suo retain count non si azzera, ma ritorna a 1);
4) in questo modo l'oggetto esiste ancora e ad esso punta il ricevente myViewController, che provvederà al rilascio soltanto quando l'oggetto non servirà più.

Per prima cosa vi chiedo: ho capito la faccenda di retain o sbaglio in qualcosa?
Cosa più importante: non mi sono affatto chiare le proprietà atomic e nonatomic; continuerò a cercare materiale al riguardo, ma se qualcuno potesse spiegarmele con qualche esempio pratico, ve ne sarei grato. [grazie]
Avatar utente
bravebrain
Aficionado
Aficionado
 
Messaggi: 119
Iscritto il: mer set 03, 2003 6:48 pm

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising