просто хотел добавить свои мысли ко всем приведенным выше ответам.
в моем случае я использую его в основном для защиты своих классов от несчастных случаев.
в моих .h файлах я объявляю только свойства без ivars. в файле .m я использую приведенный выше шаблон @synthesize
, чтобы скрыть фактический ivar от пользователей, включая меня, чтобы они были вынуждены использовать синтезированные / динамические средства доступа, а не ивары напрямую. Вы можете использовать что угодно для своего имени ивара, а не просто подчеркнуть это. например Вы могли бы сделать:
@synthesize foo = _mySecretFoo;
@synthesize bar = oneUglyVarBecauseIHateMyBoss;
таким образом, ваш босс будет видеть только полосу, и вам будет гораздо проще и, следовательно, безопаснее использовать средство доступа к полосе - используете ли вы точечную нотацию или сообщения.
Я предпочитаю этот подход другим,
@property (getter=foo, setter=setFoo, ...) _mySecretFoo;
@property (getter=bar, setter=setBar, ...) oneUglyVarBecauseIHateMyBoss;
, так как это не требует частной реализации и инкапсуляции, и это просто дополнительная печать, когда Xcode может сделать то же самое для вас. Помните, свойства не такие, как у иваров! у вас может быть больше свойств, чем у иваров, или наоборот.