objC three20 пример объявления экземпляра страницы контроллера меню ttnavigator

Я попытался понять пример кода three20 ttnavigator, и в файле MenuController.h он выглядит следующим образом:

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

@interface MenuController : TTTableViewController {
  MenuPage _page;
}

@property(nonatomic) MenuPage page;

@конец

Я не понимаю, почему существует страница MenuPage _page, объявленная как переменная экземпляра, в то время как в разделе @property объявлена ​​другая переменная страница MenuPage. В файле MenuController.m синтезируется страница MenuPage, а не _page.

Это законно?

Я знаю, что это работает, потому что компилируется, но я не понимаю, почему нам не нужно устанавливать @property (nonatomic, retain) MenuPage _page или объявлять MenuPage page в интерфейсе.

Спасибо!


person Jon    schedule 30.09.2010    source источник
comment
Спасибо, но зачем нам отделять ивар от свойства, если мы собираемся сделать их эквивалентными при синтезе?   -  person Jon    schedule 01.10.2010


Ответы (1)


Эта строка в MenuController.m

@synthesize page = _page;

соединяет свойство с ivar. (Он говорит компилятору использовать переменную _page для хранения значения свойства page.)

person Kris Markel    schedule 30.09.2010