How to destroy a singleton in Swift

后端 未结 3 1512
情书的邮戳
情书的邮戳 2020-12-28 17:38

How to destroy a singleton in Swift?

I create a singleton like this:

class MyManager  {
    private static let sharedInstance = MyManager()
    cla         


        
3条回答
  •  一向
    一向 (楼主)
    2020-12-28 18:06

    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()
    

提交回复
热议问题