Как уничтожить синглтона в swift
Как уничтожить синглтон в swift?
Я создаю синглтон, как это:
class MyManager {
private static let sharedInstance = MyManager()
class var sharedManager : MyManager {
return sharedInstance
}
}
3 ответов
просто простой пример того, как распоряжаться текущим экземпляром Синглтона:
import UIKit
class AnyTestClass
{
struct Static
{
private static var instance: AnyTestClass?
}
class var sharedInstance: AnyTestClass
{
if Static.instance == nil
{
Static.instance = AnyTestClass()
}
return Static.instance!
}
func dispose()
{
AnyTestClass.Static.instance = nil
print("Disposed Singleton instance")
}
func saySomething()
{
print("Hi")
}
}
// basic usage
AnyTestClass.sharedInstance.saySomething()
AnyTestClass.sharedInstance.dispose()
надеюсь, это может помочь.
вы не уничтожить синглтон. Синглтон создается в первый раз, когда он кому-то нужен, и никогда не уничтожается до тех пор, пока приложение живет.
Если вы хотите иметь возможность уничтожить его, сделайте его необязательным. И не используйте !
чтобы заставить развернуться, как в ответе brduca:это было бы небезопасно. Этот ответ безопаснее:
class MyManager {
private static var sharedInstance: MyManager?
class var sharedManager : MyManager {
guard let sharedInstance = self.sharedInstance else {
let sharedInstance = MyManager()
self.sharedInstance = sharedInstance
return sharedInstance
}
return sharedInstance
}
class func destroySharedManager() {
sharedInstance = nil
}
}
основное использование:
// do something with singleton
AnyTestClass.sharedManager.doSomething()
// destroy singleton
AnyTestClass.destroySharedManager()
// do something with new singleton
AnyTestClass.sharedManager.doSomething()