Справка: Переменные и свойства экземпляра [iPhone] - PullRequest
0 голосов
/ 13 июня 2010

Примерно так:

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

Я понимаю, что "UITextField * nameField;" является переменной экземпляра, а "@property ..." является свойством. Но что делают эти отдельные вещи?

Полагаю, я действительно спрашиваю, как это свойство используется, например, в файле реализации (.m)

1 Ответ

2 голосов
/ 13 июня 2010

Переменные экземпляра являются фактическими переменными, тогда как свойства эквивалентны

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

и являются полностью необязательными.Они также используются компилятором, чтобы точно понять, что вы хотите, когда вы @synthesize переменную.В основном, свойства и соответствующие @synthesize (или пользовательская реализация) разрешают ДРУГИМ классам доступ к переменным и являются полностью необязательными.Фактически, как правило, рекомендуется, в соответствии со стандартными объектно-ориентированными принципами инкапсуляции, не использовать свойства, если вы специально не собираетесь использовать их во внешних классах.Однако вам все еще нужен Интерфейсный Разработчик для распознавания UITextFields (предположительно), поэтому мы обычно ставим декоратор IBOutlet перед объявлением ivar, а не свойством.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...