首页 > 其他 > 详细

手动创建单例

时间:2016-03-08 16:09:23      阅读:231      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!