原创文章,欢迎转载。转载请注明:关东升的博客 php
什么是设计模式。设计模式是在特定场景下对特定问题的解决方案,这些解决方案是通过反复论证和测试总结出来的。实际上,除了软件设计,设计模式也被普遍应用于其余领域,好比UI设计和建筑设计等。java
下面来介绍Cocoa Touch框架中的设计模式中的单例模式。 设计模式
单例模式安全
单例模式的做用是解决“应用中只有一个实例”的一类问题。在Cocoa Touch框架中,有UIApplication、NSUserDefaults和NSNotificationCenter等单例类。另外,NSFileManager和NSBundle类虽然属于Cocoa框架的内容,但也能够在Cocoa Touch框架中使用(Cocoa框架中的单例类有NSFileManager、NSWorkspace和NSApplication等)。 微信
问题提出多线程
在一个应用程序的生命周期中,有时候只须要某个类的一个实例。例如:当iOS应用程序启动时,应用的状态由UIApplication类的一个实例维护,这个实例表明了整个“应用程序对象”,它只能是一个实例,其做用是共享应用程序中的一些资源、控制应用程序的访问,以及保持应用程序的状态等。 闭包
解决方案框架
单例模式的实现有不少方案,苹果公司在《Using Swift with Cocoa and Objective-C》官方文档中给出了一种单例模式的实现。最简单形式代码以下:测试
class Singleton { static let sharedInstance = Singleton() }
上述代码采用static的类属性实现单例模式,这种类属性只被延迟加载执行一次,即使是在多线程状况下也只是执行一次,而且保证是线程安全的。网站
若是须要进行一些初始化,能够使用以下带有闭包形式代码:
class Singleton { static let sharedInstance: Singleton = { let instance = Singleton() // 初始化处理 return instance }() }
单例模式除了上述苹果官方给出的实现外,还有不少种实现方式。
欢迎关注关东升新浪微博@tony_ 关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php