Цель C - определение переменной экземпляра при определении свойства - PullRequest
2 голосов
/ 14 декабря 2011

Я видел этот фрагмент кода в Интернете (http://iphonedevelopment.blogspot.com/2008/12/outlets-property-vs-instance-variable.html):

#import <UIKit/UIKit.h>

@interface MyViewController : UIViewController {
 UILabel *myLabel;

}
@property (nonatomic, retain) IBOutlet UILabel *myLabel;
@end

У меня вопрос ... Когда вызывается @synthesize, не создается ли переменная экземпляра UILabel автоматически? Какой смысл создавать переменную экземпляра в заголовочном файле ... Можете ли вы обойтись только с @property?

Ответы [ 3 ]

3 голосов
/ 14 декабря 2011

Когда вызывается @synthesize, не создается ли переменная экземпляра UILabel автоматически?

Да.

Какой смысл создавать переменную экземплярав заголовочном файле.

Личные предпочтения.Некоторые разработчики (например, я) предпочитают видеть полную картину состояния класса.Это помогает увидеть, какие переменные экземпляра доступны, а также проверить, что все переменные экземпляра выпущены правильно.

Это также относительно новая функция.Более старый код не ожидал автоматически сгенерированных переменных экземпляра.

Можете ли вы обойтись только с @property?

Нет, вам нужно @synthesize, чтобы получитьавтоматически сгенерированные переменные экземпляра. Значение свойства, сгенерированное программно, не будет отображаться напрямую ни к одной переменной экземпляра.

1 голос
/ 14 декабря 2011

@ synthesize создаст переменную экземпляра, но вы не сможете увидеть ее в отладчике, что может быть крайне неудобно.

Подумайте об этом, чтобы сообщить об ошибке в Apple.

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