I create a singleton like this:
class MyManager {
private static let sharedInstance = MyManager()
cla
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()