2010-11-25 9 views
1

Je travaille avec Objective C depuis quelques mois maintenant et je pense que je connais peut-être 1% de celui-ci, et comprenez encore moins que cela ... Peu importe, j'ai deux modérément populaire jeux, et en apprendre plus tous les jours.Basic Objective C définir et synthétiser les propriétés

Quand j'ai commencé, j'ai appris que la méthode des propriétés définissant était d'utiliser le même identifiant pour la propriété et la variable d'instance, comme suit:

code.h:

@interface MyClass : UISomething { 
    NSString *myPropName; 
} 

@property (nonatomic, retain) NSString *myPropName; 
@end 
Code

.m

@synthesize myPropName; 

J'ai vu récemment ce qui suit utilisé, où la variable d'instance est nommé différemment que la propriété, et la propriété est définie sur la variable d'instance i n la mise en œuvre:

code.h:

@interface MyClass : UISomething { 
    NSString *_myPropName; 
} 

@property (nonatomic, retain) NSString *myPropName; 
@end 

code.m:

@synthesize myPropName = _myPropName; 

Y at-il une raison de ne pas utiliser même identifiant pour la variable de propriété et de l'instance?

Merci! Hanaan

Répondre

2

Y at-il une raison de ne pas utiliser même identifiant pour la propriété et variable d'instance?

Pas vraiment. Certaines personnes aiment la convention de préfixer les variables d'instance avec un trait de soulignement. (Semble inutile pour moi.) D'autres personnes aiment changer les noms de propriétés pour les variables booléennes:

@synthesize isEmpty = empty; 

Vous pouvez également utiliser un identifiant plus court pour la variable d'instance et le nom plus descriptif de la propriété (audioPlayer = player). Et une application finale vient à l'esprit, renommer des variables en combinaison avec les protocoles:

@interface LowLevelAudioPlayer : NSObject <AudioLevelProvider> {…} 

@interface Jukebox : NSObject { 
    LowLevelAudioPlayer *player; 
} 

@property(readonly) id <AudioLevelProvider> levelMeter; 
@synthesize levelMeter = player; 

Ici, il est bénéfique de renommer la variable que vous ne l'accès à l'une de ses facettes.