2010-09-30 29 views
0

J'ai essayé de comprendre le code exemple Three20 de ttnavigator, et dans le fichier MenuController.h, il se présente comme suit:objc Three20 exemple par exemple la page du contrôleur menu ttnavigator déclaration

typedef enum { 
    MenuPageNone, 
    MenuPageBreakfast, 
    MenuPageLunch, 
    MenuPageDinner, 
    MenuPageDessert, 
    MenuPageAbout, 
} MenuPage; 

@interface MenuController : TTTableViewController { 
    MenuPage _page; 
} 

@property(nonatomic) MenuPage page; 

@end

Je don Ne comprenez pas pourquoi une page MenuPage est déclarée comme variable d'instance, alors qu'une autre page MenuPage est déclarée dans la section @property. Dans le fichier MenuController.m, la page MenuPage est synthétisée, pas _page.

Est-ce légal?

Je sais que cela fonctionne, car il compile, mais je ne comprends pas pourquoi on n'a pas besoin de mettre un @property (nonatomic, retain) MenuPage _page ou déclarer MenuPage page dans l'interface.

Merci!

+0

Merci, mais pourquoi voudrions-nous séparer l'ivar de la propriété si nous voulons les rendre équivalents à la synthèse? – Jon

Répondre

0

Cette ligne MenuController.m

@synthesize page = _page; 

relie la propriété à la Ivar. (Cela dit au compilateur d'utiliser le _page ivar pour stocker la valeur de la propriété page.)