How to destroy a singleton in Swift?
I create a singleton like this:
class MyManager  {
    private static let sharedInstance = MyManager()
    class var sharedManager : MyManager {
        return sharedInstance
    }
}
I create a singleton like this:
class MyManager  {
    private static let sharedInstance = MyManager()
    class var sharedManager : MyManager {
        return sharedInstance
    }
}
Just a simple example on how to dispose the current instance of a Singleton:
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()
Hope it might help.
 
    
    If you want to be able to destroy it, make it an optional. And don't use ! to force unwrap like in brduca answer: it wouldn't be thread safe. This answer is safer:
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
    }
}
Basic usage:
// do something with singleton
AnyTestClass.sharedManager.doSomething()
// destroy singleton
AnyTestClass.destroySharedManager()
// do something with new singleton
AnyTestClass.sharedManager.doSomething()
 
    
    You don't destroy a singleton. A singleton is created the first time anyone needs it, and is never destroyed as long as the application lives.
