你的位置:首页 > 操作系统

[操作系统]手动创建单例


所谓的单例就是:一个应用程序(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)sharedNetWorkToolsOnce17 {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 }