В Swift - это обычный способ определения общего шаблона, в котором свойство должно быть доступно только для чтения извне, но может изменяться внутри класса (и подклассов), которому оно принадлежит.
В Objective-C есть следующие параметры:
- Объявите свойство как доступное только для чтения в интерфейсе и используйте расширение класса для внутреннего доступа к свойству. Это доступ на основе сообщений, поэтому он отлично работает с KVO, атомарностью и т. Д.
- Объявите свойство как доступное только для чтения в интерфейсе, но получите доступ к резервному ivar внутри. Поскольку доступ по умолчанию для ivar защищен, это хорошо работает в иерархии классов, где подклассы также могут изменять значение, но в противном случае поле доступно только для чтения.
В Java соглашение:
- Объявите защищенное поле и реализуйте общедоступный, доступный только для чтения метод (метод) получения.
Какая идиома у Swift?
var
ключевое слово missing, чтобы оно скомпилировалось.)