#ios #objective-c
#iOS #objective-c
Вопрос:
Как я знаю, для общедоступных свойств в заголовочном файле компилятор автоматически генерирует методы получения и установки, и вы можете переопределить эти средства доступа. Но для внутренних свойств, объявленных в расширении класса, я не знаю, как определить методы получения и установки для них.
Моя привычка обычно инициализировать экземпляр (при необходимости) и устанавливать значения по умолчанию для свойства в методе getter. Итак, я ищу способ сделать то же самое с внутренними свойствами.
Комментарии:
1. Для внутренних свойств будут созданы геттеры и сеттеры, созданные для них так же, как и для общедоступных свойств. Можете ли вы добавить некоторый код, показывающий, как вы объявляете эти свойства, которые не генерируют геттеры и сеттеры?
Ответ №1:
Нет абсолютно никакой разницы во время выполнения между «общедоступными» и «внутренними» свойствами. Разница, которую вы обсуждаете, заключается только в том, в каком файле они объявлены. Если компилятор не может видеть определение свойства, он выдаст предупреждение (ошибка, если вы используете точечную нотацию) при попытке получить к нему доступ. Но это не имеет ничего общего с тем, как что-либо на самом деле работает во время выполнения.
Вы можете переопределить «внутренние» свойства точно так же, как и «общедоступные».
Это сказано и не связано, и просто мнение, которое следует принять или оставить, основываясь на опыте, который видел это раньше:
Моя привычка обычно инициализировать экземпляр (при необходимости) и устанавливать значения по умолчанию для свойства в методе getter. Итак, я ищу способ сделать то же самое с внутренними свойствами.
Я, вероятно, не стал бы делать это «привычкой». Может иметь смысл переопределить методы получения с отложенной инициализацией для конкретных случаев, когда это важно, но установка значений по умолчанию в геттере таким образом, как правило, слишком сложна и подвержена ошибкам при небольшом значении. Просто установите значения по умолчанию в инициализаторе.