Swift 实现单例模式Singleton pattern的三种方法
2016-01-04 21:05
501 查看
普通的写法:
但系统多个线程在执行,这种情况下就会创建多个实例,没有保证实例的唯一性。也可以修改成另外一种方式:
首次访问Inner.instance时才会创建SwiftSingleton,不会创建多个对象,但是这样返回对象是想修改重新获取也不好操作。
因此可以使用GCD来实现:
转载自:/article/3517373.html
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
相关文章推荐
- swift学习 运算符 之 for循环
- iOS- Swift:指触即开,如何集成Touch ID指纹识别功能
- 用swift写的两种形式的AlartView
- Swift Tips笔记
- 《swift2.0 官方教程中文版》 第2章-21扩展
- swift安装cocoapod遇到的一些坑
- Swift 之类的继承与类的访问权限
- Swift - Struct 與 Class 的差異性
- 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
- 《从零开始学Swift》学习笔记(Day 55)——使用try?和try!区别
- [ios][swift]使用swift闭包进行viewcontroller反向传值
- (十三) swift 真机调试,ios第三方类库打包
- Swift中的可选类型(Optional)
- Swift可选值OptionalOptional 问号 感叹号
- FM音乐播放器 基于豆瓣 api,swift,alamofire,sqlite.swift 等
- Swift2.1-自动引用计数
- Swift Functional Programming Tutorial
- 使用swift开发OSX应用
- Swift控制手电筒操作(iOS)
- swift中通知的使用