我创建一个像这样的单例:
class MyManager {
private static let sharedInstance = MyManager()
class var sharedManager : MyManager {
return sharedInstance
}
}
Run Code Online (Sandbox Code Playgroud)
brd*_*uca 33
只是一个关于如何处理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()
Run Code Online (Sandbox Code Playgroud)
希望它可能有所帮助.
如果您希望能够销毁它,请将其设为可选。并且不要!像在 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
}
}
Run Code Online (Sandbox Code Playgroud)
基本用法:
// do something with singleton
AnyTestClass.sharedManager.doSomething()
// destroy singleton
AnyTestClass.destroySharedManager()
// do something with new singleton
AnyTestClass.sharedManager.doSomething()
Run Code Online (Sandbox Code Playgroud)