手动创建单例
所谓的单例就是:一个应用程序(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 }
MDM相关内容