您的位置:首页 > 移动开发 > Swift

Swift 实现单例模式Singleton pattern的三种方法

2016-01-04 21:05 501 查看
普通的写法:

class SwiftSingleton {
class var shared: SwiftSingleton {
if !Inner.instance {
Inner.instance = SwiftSingleton()
}
returnInner.instance!
}

structInner {
staticvar instance: SwiftSingleton?
}
}


但系统多个线程在执行,这种情况下就会创建多个实例,没有保证实例的唯一性。也可以修改成另外一种方式:

class SwiftSingleton {
classvar shared: SwiftSingleton {
returnInner.instance
}

struct Inner {
static let instance: SwiftSingleton = SwiftSingleton()
}
}


首次访问Inner.instance时才会创建SwiftSingleton,不会创建多个对象,但是这样返回对象是想修改重新获取也不好操作。

因此可以使用GCD来实现:

class SwiftSingleton {
classvar shared: SwiftSingleton {
dispatch_once(&Inner.token) {
Inner.instance = SwiftSingleton()
}
return Inner.instance!
}
struct Inner {
static var instance: SwiftSingleton?
static var token: dispatch_once_t = 0
}

}


转载自:/article/3517373.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: