Что делает эта запись @synthesize? - PullRequest
1 голос
/ 16 сентября 2011

Учитывая следующий класс def:

@interface MyController : OtherController {
    NSString *_ID;
}
@property(nonatomic,retain) NSString *ID;
@end

и следующую реализацию:

@implementation DRMControllerNDS
@synthesize ID =_ID;
@end

Что здесь делает оператор @synthesize?В частности, почему мы устанавливаем значение переменной экземпляра _ID в свойство ID?Разве _ID не будет nil на данном этапе выполнения?Я видел, как эта конструкция использовалась много раз, и мне еще предстоит понять ее цель ...

Может кто-нибудь объяснить это?

Ответы [ 2 ]

4 голосов
/ 16 сентября 2011

На простом английском языке строка @synthesize говорит: «Создайте методы getter и setter для свойства« ID », но не используйте переменную экземпляра с именем« ID »(по умолчанию) для хранения значения, используйте экземпляр Вместо этого переменная называется "_ID". "

0 голосов
/ 16 сентября 2011

Если вы попытаетесь получить доступ к instanceOfMyController._ID, вы получите ошибку, поскольку свойство ._ID не существует;директива @synthesize позволяет использовать точечную запись.

Подробнее см. в этом вопросе .

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