博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

object-单例设计模式

Posted on 2015-07-09 14:09  JodyChen  阅读(254)  评论(0编辑  收藏  举报

1.什么是单例?

 

      单例是一种数据共享的方法,其实就是等同于c语言中的全局变量。在整个程序生命周期内,该对象只有一份存在内存中,可以在多个对象之间共享数据

 

  • 单例其实就相当于一个类只能有一个实例。
  • 单例是最有用的设计模式之一。它是在代码间共享数据而不需要手动传递参数的一种方法。

2.使用单例的目的

a.封装一个共享的数据; b.提供一个固定的对象创建方法; c.提供一个实例访问接口

而且在某些时候,程序多次创建某个类的对象没有任何意义,还还可能造成系统性能下降(因为频繁地创建对象,回收对象带来的系统开销问题)

3.GCD的写法:

单例类可通过static全局变量来实现,该变量single用来保存已创建的Single对象,每次访问该实例时,都要先判断该static全局变量是否为nil,如果全局变量为nil,则初始化一个实例,如果该全局变量不为nil,则程序直接返回该全局变量指向的实例。

 

 

 1 static Single *single = nil
 2 
 3 + (id)defaultManager
 4 
 5 {     
 6     static dispatch_once_t onceToken;
 7 
 8     dispatch_once(&onceToken, ^{
 9 
10         single = [[Single alloc]init];
11 
12     });
13 
14     return single;
15 
16 }

 

在方法下首先只需敲出dis即可出现:

1  static dispatch_once_t onceToken;
2 
3     dispatch_once(&onceToken, ^{
4 
5     });

 

 [Single defaultManager];//调用