原创文章,欢迎转载。转载请注明:关东升的博客

什么是设计模式。设计模式是在特定场景下对特定问题的解决方式。这些解决方式是经过重复论证和測试总结出来的。

实际上。除了软件设计,设计模式也被广泛应用于其它领域。比方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》官方文档中给出了一种单例模式的实现。最简单形式代码例如以下:

class Singleton {

    static let sharedInstance = Singleton()

}

上述代码採用static的类属性实现单例模式。这样的类属性仅仅被延迟载入运行一次。即便是在多线程情况下也仅仅是运行一次,而且保证是线程安全的。

假设须要进行一些初始化,能够使用例如以下带有闭包形式代码:

class Singleton {

    static let sharedInstance: Singleton = {

          let instance = Singleton()

          // 初始化处理

          return instance

        }()

}

单例模式除了上述苹果官方给出的实现外,还有非常多种实现方式。

最新文章

  1. poj2955 Brackets (区间dp)
  2. 【转载】Windows 7 不同安装模式简要区别(图解)
  3. 通过参数传递,判断数字、字符串、list、tuple、词典等数据类型是否为可变数据对象
  4. SQL Server 插入数据后获得自增主键值
  5. Taxes
  6. 5th day
  7. [转载]C#播放流媒体的几种方法
  8. js判断浏览器类型(手机和电脑终端)
  9. mysql外键设置选项
  10. 201521123105 第七周Java学习总结
  11. 关于AVALON总线动态地址对齐
  12. JavaScript编码规范(1)
  13. C# Enum,Int,String的互相转换 [转]
  14. 小学四则运算APP 第二阶段冲刺-第三天
  15. poj1062昂贵的聘礼(枚举+最短路)
  16. linux 实时显示网速bash
  17. 创建SpringBoot项目pom.xml文件第一行报错:Non-parseable POM E:\maven\repository\org\springframework\securit
  18. Java 笔试题(一)
  19. Monkey Android app稳定性测试工具之Monkey使用教程
  20. 介绍activity文档翻译

热门文章

  1. 怎么成为合格的WEB前端开发工程师
  2. BZOJ 2037 区间DP
  3. ToString DateTime 操作
  4. javafx image zoom
  5. ajax的使用(一)
  6. C/C++(基础编码-补码详解)
  7. [lougu1341]无序字母对
  8. mv---移动文件或目录
  9. django shell 操作
  10. 海康威视抓拍一体机--- C#源码