Есть ли 2 метода для объявления переменных экземпляра в Objective C? - PullRequest
0 голосов
/ 03 марта 2012

В большинстве уроков способ объявления переменной экземпляра состоит в том, чтобы поместить ее в .h

@interface myViewController: UIViewController {

    UITextField *myTextField;
}

@property (nonatomic, retain) IBOutlet UITextField *myTextField;

и в .м

@implementation myViewController
@synthetize myTextField;

Но в этом стандартном курсе Университета http://itunes.apple.com/itunes-u/ipad-iphone-application-development/id480479762 способ сделать это скорее

In .h делать только:

@interface myViewController: UIViewController
@property (nonatomic, retain) IBOutlet UITextField *myTextField;

В .м сделать это:

@synthetize myTextField = _myTextField;

Они эквивалентны? Второй метод специфичен для iOS5?

Ответы [ 3 ]

2 голосов
/ 03 марта 2012

Они функционально эквивалентны. В ObjC 2.0 ключевое слово synthesize автоматически создаст связанный ivar, если вы не укажете его как часть оператора synthesize. Эта функциональность присутствует во всех современных средах выполнения.

1 голос
/ 03 марта 2012

diffrence существует, в первом варианте вы можете увидеть значение параметра в отладчике во втором варианте вы не можете видеть значение параметра в режиме отладки

1 голос
/ 03 марта 2012

Они оба работают одинаково, в последнем у вас фактически есть переменная экземпляра с именем _myTextField.Я не знаю, когда началась эта «функция», и было бы интересно узнать, вставлена ​​ли переменная компилятором или прекомпилятором ...

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