В Swift статические свойства предлагают удобный способ определения свойств, принадлежащих типу, а не экземпляру. Они доступны непосредственно через сам тип, без необходимости создания экземпляра. В этой статье мы углубимся в мир статических свойств Swift, исследуем их преимущества и продемонстрируем различные методы их использования. Итак, приступим!
- Базовое объявление и доступ.
Самый простой способ объявить статическое свойство — использовать ключевое словоstatic
внутри типа. Вот пример:
struct MyClass {
static var myStaticProperty: Int = 10
}
print(MyClass.myStaticProperty) // Output: 10
- Контроль доступа.
Статические свойства также могут иметь модификаторы контроля доступа, такие какprivate
,internal
,fileprivate
иpublic
. Вот пример:
class MySingleton {
private static let sharedInstance = MySingleton()
private init() {}
static var shared: MySingleton {
return sharedInstance
}
}
- Вычисляемые статические свойства.
Подобно вычисляемым свойствам экземпляра, статические свойства также могут быть вычислены. Вот пример:
struct Circle {
static let pi = 3.14159
static func area(radius: Double) -> Double {
return pi * radius * radius
}
}
let radius = 5.0
let circleArea = Circle.area(radius: radius)
print(circleArea) // Output: 78.53975
- Наблюдатели статических свойств.
У статических свойств также могут быть наблюдатели свойств (willSet
иdidSet
). Вот пример:
struct Settings {
static var themeColor: UIColor = .blue {
willSet {
print("Changing theme color to \(newValue)")
}
didSet {
print("Theme color changed from \(oldValue) to \(Settings.themeColor)")
}
}
}
Settings.themeColor = .red
- Статические переменные в протоколах.
Начиная с Swift 5.3, протоколы могут определять статические свойства. Вот пример:
protocol MyProtocol {
static var myStaticProperty: Int { get }
}
struct MyStruct: MyProtocol {
static var myStaticProperty: Int = 42
}
print(MyStruct.myStaticProperty) // Output: 42
Статические свойства Swift предоставляют мощный механизм для определения свойств, связанных с типом, а не с экземпляром. Доступ к ним можно получить напрямую через тип, что делает их полезными для различных сценариев, таких как общие ресурсы, одиночные элементы и глобальные конфигурации. Понимая различные методы использования статических свойств, вы можете улучшить свой код Swift, улучшить его организацию и читабельность.