码迷,mamicode.com
首页 > 其他好文 > 详细

手动创建单例

时间:2016-03-08 16:11:16      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:

所谓的单例就是:一个应用程序(app)只有一个实例化对象,这个对象就是单例,一般用于音乐播放器和工具类

在这里教大家如何手动创建单例,一种是利用互斥锁的方式,另一种是利用dispatch的一次性执行.

 

 1//通过互斥锁创建单例
 2 +(instancetype)sharedNetWorkTools
 3 {
 4     //static修饰
 5     static NetworkTools *tools = nil;
 6     //判断实例化对象是否存在
 7     //互斥锁
 8     @synchronized(self) {
 9         if (tools == nil) {
10             tools = [NetworkTools new];
11         }
12     }
13     return tools;
14 }

 

15 //一次性执行创建单例
16 +(instancetype)sharedNetWorkToolsOnce
17 {
18     //static修饰
19     static NetworkTools *tools = nil;
20     
21     //一次性执行 线程安全
22     static dispatch_once_t onceToken;
23     dispatch_once(&onceToken, ^{
24         if (!tools) {
25             tools = [[NetworkTools alloc]init];
26         }
27     });
28     return tools;
29     
30 }

 

手动创建单例

标签:

原文地址:http://www.cnblogs.com/liyy2015/p/5254331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!