Shared instance swift
本问题已经有最佳答案,请猛点这里访问。
你将如何用swift写下面的内容?
1 2 3 4 5 6 7 | static ClassName* singleCommon = nil; + (ClassName*)sharedInstance { @synchronized(singleCommon) { if(!singleCommon) singleCommon = [[ClassName alloc] init]; } return singleCommon; } |
一个好的解决方案是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class Singleton { class var sharedInstance: Singleton { struct Static { static var instance: Singleton? static var token: dispatch_once_t = 0 } dispatch_once(&Static.token) { Static.instance = Singleton() } return Static.instance! } } |
解决方案和解释来自:网址:http://code.martinrue.com
我通常以这样的方式使用共享立场:
1 2 3 4 5 6 7 8 9 10 11 | private let _sharedInstance = SomeClass() class SomeClass: NSObject { class var sharedInstance: SomeClass { get { return _sharedInstance } } } |
下面是讨论这个问题的blogpost:http://thatthinginswift.com/singletons网站/