Переменные экземпляра являются фактическими переменными, тогда как свойства эквивалентны
- (UITextField *)nameField;
- (void)setNameField:(UITextField *)newTextField;
и являются полностью необязательными.Они также используются компилятором, чтобы точно понять, что вы хотите, когда вы @synthesize переменную.В основном, свойства и соответствующие @synthesize (или пользовательская реализация) разрешают ДРУГИМ классам доступ к переменным и являются полностью необязательными.Фактически, как правило, рекомендуется, в соответствии со стандартными объектно-ориентированными принципами инкапсуляции, не использовать свойства, если вы специально не собираетесь использовать их во внешних классах.Однако вам все еще нужен Интерфейсный Разработчик для распознавания UITextFields (предположительно), поэтому мы обычно ставим декоратор IBOutlet перед объявлением ivar, а не свойством.