110 votes

Utiliser une propriété BOOL

Apple recommande de déclarer un BOOL propriété de cette façon:

@property (nonatomic, assign, getter=isWorking) BOOL working;

Comme je suis en Objective-C 2.0 propriétés et la notation point, j'ai accès à cette propriété à l'aide de self.working. Je sais que je pourrais aussi utiliser [self isWorking] - mais je n'ai pas.

Donc, comme je suis en utilisant la notation point partout, pourquoi devrais-je définir un supplément de propriété? Serait-il correct d'écrire tout simplement

@property (nonatomic, assign) BOOL working;

Ou dois-je avoir tous les avantages de l'écriture getter=isWorking dans mon cas (utilisation de la notation point)?

Merci!

202voto

BoltClock Points 249668

Apple recommande simplement de déclarer un isX à des fins stylistiques. Peu importe que vous personnalisiez le nom du getter ou non, tant que vous utilisez la notation par points ou la notation par message avec le nom correct. Si vous utilisez la notation par points, cela ne fait aucune différence, vous y accédez toujours par le nom de la propriété:

 @property (nonatomic, assign) BOOL working;

[self setWorking:YES];         // Or self.working = YES;
BOOL working = [self working]; // Or = self.working;
 

Ou

 @property (nonatomic, assign, getter=isWorking) BOOL working;

[self setWorking:YES];           // Or self.working = YES;, same as above
BOOL working = [self isWorking]; // Or = self.working;, also same as above
 

-26voto

Thomson Comer Points 2369

Il n'y a aucun avantage à l'utilisation des propriétés avec des types primitifs. @property est utilisé avec des tas alloués NSObjects comme NSString*, NSNumber*, UIButton*, et etc, parce que de mémoire gérés accesseurs sont créés pour gratuit. Lorsque vous créez un BOOL, la valeur est toujours allouée sur la pile et ne nécessite aucun accesseurs pour empêcher des fuites de mémoire. isWorking est tout simplement la façon populaire d'exprimer l'état d'une valeur booléenne.

Dans un autre langage OO de vous faire une variable private bool working; et les deux accesseurs: SetWorking pour le setter et IsWorking pour l'accesseur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X