Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
共享实例swift_Swift - Fatal编程技术网

共享实例swift

共享实例swift,swift,Swift,您将如何用swift书写以下内容 static ClassName* singleCommon = nil; + (ClassName*)sharedInstance { @synchronized(singleCommon) { if(!singleCommon) singleCommon = [[ClassName alloc] init]; } return singleCommon; } 我通常在Swift中使用sharedInstance,如下

您将如何用swift书写以下内容

static ClassName* singleCommon = nil;
+ (ClassName*)sharedInstance {
    @synchronized(singleCommon) {
        if(!singleCommon) singleCommon = [[ClassName alloc] init];
    }
    return singleCommon;
}

我通常在Swift中使用sharedInstance,如下所示:

private let _sharedInstance = SomeClass()

class SomeClass: NSObject {

    class var sharedInstance: SomeClass {
        get {
            return _sharedInstance
        }
    }

}
下面是一篇讨论这个问题的博客: 一个好的解决方案是:

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!
    }
}
解决方案和解释来自:

味道很难闻,您的
\u sharedInstance
不在类中,如果它们与您在此处执行的操作相同,则可能与其他实现冲突