Static свойства



🟢 lvl: jun+



static свойствами называют свойства и методы, принадлежащие типу, а не экземплярам типа.



Инициализация static пропертей (а также глобальных переменных) происходит лениво, при первом обращении, инициализация гарантированно произойдет только один раз даже при паралельном обращении с нескольких потоков.



Когда мы должны использовать static свойства и методы?



🟣 Использование статических свойств для конфигурации



Самый частый кейс — использовать свойства, единственной целью которых является настройка других объектов (см скрин 1).



Так удобно юзать настройки цветов и шрифтов в одном месте, а использование enum не требует конструктора



Использование статических свойств для дорогих объектов



Юзать как кеш. Создание некоторых объектов может быть дорогим. Такие объекты можно сохранить в статическом объекте (см скрин 2)



Создание фабрики со статическими методами



🔵 Использование для синглтонов

Каждый из перечисленных имеет статическое свойство, которое содержит экземпляр по-умолчанию. URLSession.shared, UserDefaults.standard, NotificationCenter.default, DispatchQueue.main.



Основное преимущество таких определений — это потокобезопасность и гарантия того, что 2 URLSession не выполнят одновременно один запрос.



- Эффективно используем статические свойства

- Swift Properties