《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式
2016-03-22 13:21
579 查看
原创文章,欢迎转载。转载请注明:关东升的博客 什么是设计模式。设计模式是在特定场景下对特定问题的解决方案,这些解决方案是经过反复论证和测试总结出来的。实际上,除了软件设计,设计模式也被广泛应用于其他领域,比如UI设计和建筑设计等。下面来介绍Cocoa Touch框架中的设计模式中的单例模式。 单例模式单例模式的作用是解决“应用中只有一个实例”的一类问题。在Cocoa Touch框架中,有UIApplication、NSUserDefaults和NSNotificationCenter等单例类。另外,NSFileManager和NSBundle类虽然属于Cocoa框架的内容,但也可以在Cocoa Touch框架中使用(Cocoa框架中的单例类有NSFileManager、NSWorkspace和NSApplication等)。 问题提出在一个应用程序的生命周期中,有时候只需要某个类的一个实例。例如:当iOS应用程序启动时,应用的状态由UIApplication类的一个实例维护,这个实例代表了整个“应用程序对象”,它只能是一个实例,其作用是共享应用程序中的一些资源、控制应用程序的访问,以及保持应用程序的状态等。 解决方案单例模式的实现有很多方案,苹果公司在《UsingSwift with Cocoa and Objective-C》官方文档中给出了一种单例模式的实现。最简单形式代码如下:
上述代码采用static的类属性实现单例模式,这种类属性只被延迟加载执行一次,即便是在多线程情况下也只是执行一次,并且保证是线程安全的。如果需要进行一些初始化,可以使用如下带有闭包形式代码:
单例模式除了上述苹果官方给出的实现外,还有很多种实现方式。
class Singleton { static let sharedInstance = Singleton() }
上述代码采用static的类属性实现单例模式,这种类属性只被延迟加载执行一次,即便是在多线程情况下也只是执行一次,并且保证是线程安全的。如果需要进行一些初始化,可以使用如下带有闭包形式代码:
class Singleton { static let sharedInstance: Singleton = { let instance = Singleton() // 初始化处理 return instance }() }
单例模式除了上述苹果官方给出的实现外,还有很多种实现方式。
相关文章推荐
- swift2使用sqlite数据库及常见错误总结(模拟机下)
- Swift函数和闭包
- swift - Property Observers
- 苹果发布Xcode 7.3,Swift更新至2.2版本
- Swift中的部分更新与旧版的区别
- OC获取文件MD5值与swift字符串MD5加密方法
- swift - Designated Initializer & Convenience Initializers
- swift学习资源
- Swift Explore - 关于 Swift 中的 isEqual 的一点探索
- swift语言学习体会第一章
- swift - DateUtil
- 精通iOS移动开发(Xcode7&Swift2;):多媒体相关技术
- swift中的如果在构造方法中使用KVC, 调用了super.init(), 报错, 基本数据类型属性找不到
- swift 懒加载
- Swift中FDMB的使用(增、删、改、查)
- iOS平台下运用百度地图SDK(swift语言)
- Swift2.0 UITextView 和 UITextFile 的使用
- Swift调用系统相机
- swift设置圆角
- (译)Swift2.2-可选链