Руководство по использованию willSet и didSet, или Property Observers за три минуты

Руководство по использованию willSet и didSet, или Property Observers за три минуты

Viktor Grushevskii (https://t.me/iOS_Career)

Поговорим о том, как выполнить код до или после изменения значений.

Property Observers (наблюдатели свойств)

Property observers созданы для того, чтобы разработчикам не нужно было писать код каждый раз, когда значение свойства или переменной изменяется. В основном существует 2 вида наблюдателей свойств:

willSet - выполняет код непосредственно перед изменением свойства.

didSet - выполняет код сразу после изменения свойства.

Чтобы лучше понять это, ниже приведен простой пример комбинированного кода willSet и didSet:

На выходе получим:

User will change
User was changed

Объясним, что произошло с приведенным выше кодом. Когда значение user изменилось на Robin, наблюдатели автоматически выполнили свой блок кода. Сначала был выполнен willSet, прежде чем значение изменилось на Robin. Затем, когда значение изменилось на Robin, был выполнен didSet.

Без property observers (наблюдателей свойств) вы могли бы сделать примерно так:

И на выходе получили бы то же самое.

Предположим, что каждый раз, когда вы обновляете значение пользователя, оно должно выводиться в консоли. Использование наблюдателей свойств делает решение такого рода задач более удобным по сравнению с традиционным способом. Как и в нашем случае, нет необходимости многократно использовать блок кода (даже если это функция).

Важное замечание для начинающих: вы можете просто использовать тот наблюдатель свойств, который вам нужен. Ниже приведен пример кода, в котором вы просто используете didSet:

В итоге мы получим следующее:

User was changed


Работа с нулевыми значениями

Для работы наблюдателей свойств требуется начальное значение. Поэтому, если вы собираетесь использовать nil в качестве начального значения, убедитесь, что вы объявили его опциональным с помощью ?. Ниже приведен пример:

Параметры

Наблюдатели могут также использовать параметры. По умолчанию:

willSet использует newValue для хранения входящего значения.

didSet использует oldValue для хранения предыдущего значения.

Эти параметры уже встроены по умолчанию, поэтому нет необходимости в их объявлении. Ниже приведен пример того, как это работает:

В результате:

User will change to Robin
User was changed from Batman to Robin

Вы также можете использовать пользовательские параметры, объявив их после свойства-наблюдателя внутри круглой скобки. Вот пример:

B итоге вывод будет таким же:

User will change to Robin
User was changed from Batman to Robin

Вот так, все действительно очень просто. Надеюсь, вы сможете использовать property observers в своем следующем проекте.

Статья основана на оригинальном посте от Arc Sosangyo


А про разработку можно прочитать в моём авторском канале.

Report Page