2010-12-02 8 views
0

Regardez le code ci-dessous;but de @property dans l'objectif c

@interface testViewController : UIViewController 
{ 
    int age; 
    UIPopoverController *popoverController; 
} 
@property (nonatomic , retain) int age; 
@property (nonatomic , retain) UIPopoverController *popoverController; 

@end 

@property (nonatomic , retain) int age définit accesseurs pour int age; et @synthesizing eux dans la mise en œuvre donne Implémentation autogenerated du getter et setter. Ce que je ne comprends pas est à propos de la deuxième. quelles méthodes la deuxième propriété (@property (nonatomic , retain) UIPopoverController *popoverController;) génère-t-elle? (:

j'ai vu beaucoup de programmes qui utilisent @property avec des objets en dehors de int, etc chaîne;

peut tout me guider vers un tutoriel approprié sur ce

Merci à l'avance (peut aussi.. quelqu'un me dire comment accepter des réponses sur stackoverflow).

Répondre

4

il est difficile de conseiller quelque chose de mieux official documentation (au moins vous devriez commencer par lire).

@property (nonatomic , retain) int age; 

est vraiment censé déclarer des méthodes setter/getter pour Ivar d'âge, mais cette ligne donnera erreur du compilateur que vous ne pouvez pas déclarer la propriété avec retenue attribut pour les types non-objet (voir docs pour plus de détails)

@property (nonatomic , retain) UIPopoverController *popoverController; 

Cette ligne ne diffère pas beaucoup de la 1ère - il déclare également des méthodes setter et getter pour popoverController Ivar, et régleurs synthétisé automatiquement conservera popoverController il obtient

0

@synthesize crée toujours les accesseurs. Dans votre cas:

- (void) setPopoverController:(UIPopoverController *)value; 
- (UIPopoverController *) popoverController; 
1

Si vous avez ceci:

@property (nonatomic , retain) UIPopoverController *popoverController; 

les méthodes générées par @synthesize seront quelque chose comme:

-(UIPopoverController*) popoverController 
{ 
    return popoverController; 
} 

-(void) setPopoverController: (UIPopoverController*) newValue 
{ 
    [newValue retain]; 
    [popoverController release]; 
    popoverController = newValue; 
}