Пример 1 демонстрирует старый способ определения пар переменных ivar / property.Новый компилятор теперь генерирует ivars (часть NSstring *_sale;
) для вас.В примере 1 также показано, как вручную связать свойство sale
с ivar _sale
с помощью оператора @synthesize sale = _sale;
.
Пример 2 - более краткий способ реализации свойств в Obj-C и способ, которым выувидите большинство примеров кода в ИнтернетеВ подавляющем большинстве случаев вы можете писать свои свойства без необходимости перезаписывать методы доступа / мутатора, сгенерированные для вас компилятором.
Существуют некоторые твердолобые сторонники префикса подчеркивания, чтобы обозначить переменные экземпляра для ясности.ради.Вы можете обнаружить, что это помогает вам, когда дело доходит до управления памятью, как в Примере 1, установка self.sale
, равная автоматически освобожденной NSString, подойдет, поскольку она будет сохранена, но установка _sale
, равная автоматически выпущенному объекту, приведет кпозднее, из-за нестабильного поведения, поскольку переданная NSString не будет сохранена переменной экземпляра.
В общем, я предпочитаю записывать свои свойства, как показано в примере 2.
ShortОтвет : Есть два способа сделать это, потому что новый компилятор теперь может сделать что-то для вас, но предыдущий способ был оставлен для обратной совместимости.