Question

J'ai vu ce code dans la plupart du temps. Ici, il y a deux noms de variables définies et dans la mise en œuvre, il en affectant la synthèse. Quel est le but de faire quelque chose comme ça? Comme maintenant 2 noms de variables séparés. Est-ce ce genre d'une convention?

Test.h

@interface Test {
  id<something> _variable1;
}

@property (nonatomic, retain)  id<something> variable2;

Test.m

@synthesize variable2 = _variable1
Était-ce utile?

La solution

Il n'y a qu'une seule variable. La chose nommée variable2 est en fait une propriété, qui est essentiellement un raccourci syntaxique pour une paire de méthode get / set. Lors de la définition d'une propriété, vous pouvez écrire le get / méthodes définies explicitement ...

- (void)setVariable2:(id<something>)value {
    if (_variable1 != value) {
        [_variable1 release];
        _variable1 = [value retain];
    }
}

- (id<something>)variable2 {
    return _variable1;
}

... ou utiliser la construction @synthesize pour générer les méthodes ci-dessus automatiquement, vous évitant ainsi beaucoup de dactylographie monotone. (Il émet également le code pour libérer _variable1 sur la destruction de l'objet, que je ne l'ai pas inclus ici.)

Parfois, cependant, vous voudrez peut-être mettre en œuvre un ou l'autre de ces méthodes différemment à la valeur par défaut. Dans ce cas, vous pouvez écrire votre propre. Vous pouvez même mélanger @synthesize et une version personnalisée de seulement l'une des méthodes.

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