Question

Je suis nouveau à objc-C et je suis en train d'apprendre maintenant sur l'utilisation @property et @synthesize pour les variables et je me demandais comment je puis accéder à la variable. Dois-je accéder par [self var] ou self.var ou quoi? Cela démontre ma question avec le code:

@property (nonatomic, strong) UILabel *lbl;
...
@synthesize lbl = _lbl;

-(void) doStuff
{
   // How should I acces label?
   _lbl.text = @"A";
   [self lbl].text = @"B";
   self.lbl.text = @"C";
}
Était-ce utile?

La solution

Il n'y a pas de différence ici:

UILabel * l = [self lbl];  // ==   UILablel *l = self.lbl;
[self setLbl:l];          //  ==   self.lbl = l;

Mais il y a une différence ici dans l'échantillon:

_lbl.text = @"A";  

Ce dernier n'est pas bon parce que vous accédez au iVar directement sans passer par votre @property, qui souvent ne font pas de sens à faire si vous avez le déclarer comme @property.
Dans votre cas, vous changez une propriété sur votre iVar, donc il n'y a pas de mal, mais si vous faites ceci:

_lbl = [[[UILabel alloc] initWithFrame:aRect] autorelease];

qui vous causer un gros problème, parce que vous auriez enjambent le « poseur ». Un poseur de strong aurait retenir cet objet, mais maintenant il est à retenir par personne, elle disparaîtra et vous aurez un mauvais pointeur, qui peut faire votre plantage de l'application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top