1.什么是单例?
单例是一种数据共享的方法,其实就是等同于c语言中的全局变量。在整个程序生命周期内,该对象只有一份存在内存中,可以在多个对象之间共享数据
- 单例其实就相当于一个类只能有一个实例。
- 单例是最有用的设计模式之一。它是在代码间共享数据而不需要手动传递参数的一种方法。
2.使用单例的目的
a.封装一个共享的数据; b.提供一个固定的对象创建方法; c.提供一个实例访问接口
而且在某些时候,程序多次创建某个类的对象没有任何意义,还还可能造成系统性能下降(因为频繁地创建对象,回收对象带来的系统开销问题)
3.GCD的写法:
单例类可通过static全局变量来实现,该变量single用来保存已创建的Single对象,每次访问该实例时,都要先判断该static全局变量是否为nil,如果全局变量为nil,则初始化一个实例,如果该全局变量不为nil,则程序直接返回该全局变量指向的实例。
static Single *single = nil + (id)defaultManager {
static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ single = [[Single alloc]init]; }); return single; }
在方法下首先只需敲出dis即可出现:
static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ });
[Single defaultManager];//调用