Свойства и объявление переменной экземпляра - PullRequest
3 голосов
/ 17 сентября 2010

Я заметил, что вы можете 'дважды объявить' переменную следующим образом:

@interface A {
    NSString *instanceVariable;
}
@property (nonatomic, retain) NSString *instanceVariable;
@end

Это имеет тот же эффект, что и просто:

@interface A {
}
@property (nonatomic, retain) NSString *instanceVariable;
@end

Почему некомпилятор жалуется в подобных ситуациях?

1 Ответ

7 голосов
/ 17 сентября 2010

Потому что оба способа действительны.

Объявление ivar просто объявлением свойства для него - это новая языковая функция, доступная начиная с objc 2.0

В «Разница во время выполнения» в разделе «Язык программирования Objective-C» указано:

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

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