How would you write the following in swift?
static ClassName* singleCommon = nil;
+ (ClassName*)sharedInstance {
@synchronized(singleCommon) {
if(!singleCommon) singleCommon = [[ClassName alloc] init];
}
return singleCommon;
}
How would you write the following in swift?
static ClassName* singleCommon = nil;
+ (ClassName*)sharedInstance {
@synchronized(singleCommon) {
if(!singleCommon) singleCommon = [[ClassName alloc] init];
}
return singleCommon;
}
I Usually use sharedInstance in Swift like this:
private let _sharedInstance = SomeClass()
class SomeClass: NSObject {
class var sharedInstance: SomeClass {
get {
return _sharedInstance
}
}
}
Here is a blogpost discussing this question: http://thatthinginswift.com/singletons/
A good solution is:
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!
}
}
Solution and explanation coming from: http://code.martinrue.com