Да, это шаблон синглтона. Это все быстро, как UserDefaults.standard
, NotificationCenter.default
, FileManager.default
, ... Например, URLSession.shared
определяется в яблоке документы как:
Общий одноэлементный объект сеанса.
Одноэлементный шаблон обеспечивает создание только одного экземпляра класса. Класс лениво создает свой единственный экземпляр при первом запросе и после этого гарантирует, что никакой другой экземпляр не может быть создан.
Вот пример кода:
class MyClass {
static let shared = MyClass()
//Make the initializer private
private init(){}
//Here is a sample method
func doSomething() {
print("Doing something")
}
}
Создание инициализатора исключает возможность создания множества экземпляров, и, таким образом, следующая строка выдаст ошибку:
let instance = MyClass() //MyClass initializer is inaccessible due to private protection level
Для доступа к синглтону используйте MyClass.shared
:
let instance = MyClass.shared
instance.doSomething() //Prints: Doing something
Для получения более подробной информации о шаблоне синглтона в Swift, вы можете посмотреть здесь и здесь .