Использование Swift Singleton

У меня есть следующий класс Singleton:

class Singleton {
    static let sharedInstance = Singleton()
}

Я могу найти очень мало онлайн о том, как использовать многочисленные быстрые реализации шаблона Singleton. Я использовал его ранее в Objective-C в предыдущем приложении, но мне это показалось намного более простым.

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

singletonClass *mySingleton = [singletonClass sharedsingletonClass];
mySingleton.whatever = "blaaaah"

Я ценю помощь! Также я новичок здесь и новичок в Swift.

1 ответ

Решение

Существует много информации о синглетах в Swift. Вы сталкивались с этой статьей со своим мастерством Google? http://krakendev.io/blog/the-right-way-to-write-a-singleton

Но чтобы ответить на ваш вопрос, вы можете просто определить все, что вы хотите использовать в обычном режиме.

class Singleton {
    static let sharedInstance = Singleton() // this makes singletons easy in Swift
    var stringArray = [String]()

}

let sharedSingleton = Singleton.sharedInstance

sharedSingleton.stringArray.append("blaaaah") // ["blaaaah"]

let anotherReferenceToSharedSingleton = Singleton.sharedInstance

print(anotherReferenceToSharedSingleton.stringArray) // "["blaaaah"]\n"

Согласитесь с Andrew Sowers. Просто помните, что вы также должны объявить приватный инициализатор, например так:

class Singleton: NSObject {
    static let sharedInstance = Singleton()
    private override init() {}
}

Без этого закрытого init() другие объекты могли бы создать свой собственный экземпляр:

let mySingleton = Singleton()

Теперь есть два экземпляра, Singleton.sharedInstance и mySingleton - больше не одиночка! Я обнаружил это через неприятную ошибку, когда несколько "синглетонов" запускали таймеры и наносили ущерб.

Другие вопросы по тегам