Подчеркивание перед именем свойства в установщике

Я написал метод установки -

- (void)setMyProp:(MyProp *)myProp{
    _myProp = myProp;
}

Как подчеркивание ставится перед тем, как имя свойства работает? Я знаю, что этот вопрос задавали, но они касаются установки пользователем имени свойства на _myProp, некоторого соглашения. Я не синтезирую и не меняю имя свойства. Как работает это подчеркивание?


person user1559227    schedule 06.03.2013    source источник


Ответы (1)


Если вы используете последнюю версию LLVM, то компилятор создаст для вас @synthesize с синтаксисом:

@synthesize myProp=_myProp;

Поэтому вы можете использовать _myprop, даже если вы не синтезировали явно.

*Примечание: _myProp обеспечивает прямой доступ к свойству, а self.myProp вызывает метод доступа. Всегда используйте self.myProp

person Anoop Vaidya    schedule 06.03.2013
comment
Ваше примечание неверно. Использование _myProp обеспечивает прямой доступ к ivar. Свойство не используется вообще таким образом. - person rmaddy; 06.03.2013
comment
Всегда также неправильно... Вы бы никогда не использовали его в самом установщике и не должны использовать его в своих методах инициализации, ссылаясь на документы;) - person HAS; 06.03.2013
comment
@rmaddy: я вырезал примечание. - person Anoop Vaidya; 07.03.2013
comment
@HAS: я вырезал примечание. - person Anoop Vaidya; 07.03.2013