2010-06-13 8 views
0

Dans quelque chose comme ceci:Aide: instance Variables et propriétés [iPhone]

@interface Control_FunViewController : UIViewController { 
    UITextField *nameField; 
    UITextField *numberField; 
} 
@property (nonatomic, retain) IBOutlet UITextField *nameField; 
@property (nonatomic, retain) IBOutlet UITextField *numberField; 

Je comprends que "UITextField * nameField;" est une variable d'instance et "@property ..." est une propriété. Mais que font ces choses individuelles?

je suppose que ce que je demande vraiment comment la propriété est utilisée par exemple dans le fichier de mise en œuvre (.m)

Répondre

2

Les variables d'instance sont les variables réelles, alors que les propriétés sont l'équivalent de

- (UITextField *)nameField; 
- (void)setNameField:(UITextField *)newTextField; 

et complètement facultatif. Ils sont également utilisés par le compilateur pour comprendre exactement ce que vous voulez quand vous synthétisez une variable. Fondamentalement, les propriétés et @synthesize (ou implémentation personnalisée) correspondantes permettent aux autres classes d'accéder aux variables et sont complètement optionnelles. En fait, il est généralement recommandé, comme pour les principes d'encapsulation orientés objet standard, de ne pas utiliser de propriétés à moins que vous n'ayez spécifiquement prévu qu'elles soient utilisées par des classes externes. Cependant, vous avez toujours besoin d'Interface Builder pour reconnaître les UITextFields (probablement), c'est pourquoi nous mettons généralement le décorateur IBOutlet avant la déclaration ivar, pas la propriété.

Questions connexes