Ответ 1
Просто, чтобы избежать путаницы (см. комментарии): Использование = _variable
части @synthesize
не требуется, а также не требуется @synthesize
.
Это усилие требуется только тогда, когда вы хотите связать свойство с определенной переменной экземпляра. С более ранними версиями Objective-C эта часть инструкции требовалась, чтобы установить имя в нечто отличное от имени свойства, поэтому, когда вы хотите вызвать iVar _variable
и свойство variable
. По умолчанию будет variable
(в отличие от вашего вопроса). Без этого = something
ivar и свойство имеют одно и то же имя.
Кстати, нет ничего плохого в том, чтобы использовать одно и то же имя для обоих. Но имея разные имена, ведущий _
, сделает более понятным для программиста, будет ли он или она напрямую обращаться к ivar или хотя бы к способам доступа. Иногда это имеет огромное значение, особенно когда не используется ARC. Поэтому он помогает избежать ошибок.
С текущим Objective-C, однако, вы можете вообще опустить оператор @synthesize
и пойти в этом случае по умолчанию. По умолчанию автоматически синтезированное имя экземпляра variable
будет иметь ведущий _
, поэтому _variable
в вашем примере.