Swift实战-单例模式

Posted 红凉梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift实战-单例模式相关的知识,希望对你有一定的参考价值。

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF提出了23种设计模式,本系列将使用Swift语言来实现这些设计模式

概述

整个应用生命周期中,只存在唯一一个实例对象的类被称作单例,所以的模块共同使用这一个对象的设计叫做单例模式

单例模式Singleton具有如下优点:

  • 多个模块共用同一个对象,保证了数据的唯一性
  • 统一逻辑功能,具有较高的灵活性

ios开发中,本身也会接触到不少的系统单例,例如NSNotificaitonCenter通知中心、UIApplication应用单例等类,在swift中主要使用两种方式进行单例的创建,通常我将用户数据存储为单例方便不同模块访问:

  • 方式1,类内部声明静态常量并私有化构造器方法
  • 方式2,使用全局常量对象

对于从OC转过来的开发者而言,dispatch_once创建的单例更符合他们的习惯,但在Swift3.0后,这个方法本身已经无法使用了,苹果在static let修饰变量的实现中已经使用了dispatch_once的方式保证了变量只存在一份。

总结

单例保证了数据在应用运行期间的唯一性,减少了重复内存的损耗,但如果单例本身内存占用过大时,又是一种负担。另一方面,单例的访问也存在着多线程安全的问题,这需要我们合理的使用线程锁来保证单例的稳定性。

以上是关于Swift实战-单例模式的主要内容,如果未能解决你的问题,请参考以下文章

swift语言实现单例模式

设计模式(Swift) - 单例模式备忘录模式和策略模式

swift Swift中单例模式的示例

单例模式实战

swift实现单例的四种方式

spark 大型项目实战:用户访问session分析 --单例模式