Если не существует переменной экземпляра (ivar) с тем же именем, что и у свойства, современная среда выполнения создает новый ivar с указанным именем свойства для хранения значения свойства, когда оно видит @ synthesize.
Есливаше свойство не было определено как неатомичное, и вы хотите, чтобы ваш код был потокобезопасным, это может помочь вам не ссылаться на ivar (независимо от того, объявили вы его или он был синтезирован), так как это помешает вам получить прямой доступ к нему при изменении свойства.Насколько мне известно, нет способа получить такую же блокировку, которую получает @synthesize для атомарного свойства, и, следовательно, вы не можете выполнять безопасное чтение ивара атомарного свойства, кроме как с помощью его синтезированного метода доступа (если вы не закодировали явный установщик и не заблокировали что-тосам). Если вы заинтересованы в написании своих собственных аксессоров, у меня есть сообщение на эту тему здесь.
Я считаю, что более обычно иметь явный ивар для каждого свойства, но это может быть из-забольшая часть кода предназначена для совместимости с унаследованной средой выполнения, а не потому, что это по сути хорошая практика.
Редактировать: Я исправил параграф 1, сказав, что синтезированный ивар имеет имяимущество;Я не видел обсуждения его названия в документах Apple, поэтому предположил, что он недоступен для пользователей.Спасибо комментаторам за указание на это.