Смотрите другие ответы о настройщике свойств, это о геттерах:
Обычно нет никакой разницы в использовании геттера (self.name
) или ивара напрямую (_name
, name
, name_
в зависимости от вашего вкуса).
Однако могут быть случаи, когда что-то (полу) разумное происходит под капотом, и добытчик скрывает какую-то магию. Представьте себе этот пользовательский геттер:
-(NSString*)name
{
if ( _name == nil ) return @"No name set";
return _name;
}
Или представьте, что вы переделываете свой класс, и _name
ivar отбрасывается в пользу свойства person
, содержащего больше информации, и вы хотите, чтобы ваш код продолжал работать без особых хлопот:
-(NSString*)name
{
return self.person.name;
}
Людям может или не может понравиться такой подход, но это выходит за рамки этого вопроса. Дело в том, что это может случиться. Поэтому лучший выбор - всегда использовать геттер.