Как уничтожить синглтона в 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()