Существует распространенное заблуждение, что директива @synthesize требуется для реализации сеттеров и геттеров, созданных с помощью директивы @property, но это не так. Использование директивы @property без @synthesize все равно будет генерировать сеттеры / геттеры и позволит вам использовать точечную нотацию. Однако, если пропустить директиву @synthesize, компилятор сгенерирует соответствующие переменные экземпляра с начальным символом подчеркивания, например, свойство myVar будет иметь переменную экземпляра _myVar.
Использование начального подчеркивания - это общее соглашение, которое позволяет различать свойства и переменные экземпляра. Также свойства и переменные экземпляра обычно имеют одно и то же имя, что по умолчанию делает @synthesize.