Что это за паттерн дизайна, это то, что переменная класса имеет сам класс - PullRequest
0 голосов
/ 25 августа 2018

Переменная класса, которая содержит сам класс, например, свойство main класса DispatchQueue

Вопрос 1

Что это за шаблон дизайна?Это связано с Синглтоном?

Вопрос 2

Как объект инициализируется при обращении к этому свойству?

1 Ответ

0 голосов
/ 25 августа 2018

Да, это шаблон синглтона. Это все быстро, как 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, вы можете посмотреть здесь и здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...