共享实例swift

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网站/