iOS多线程中的单例
1 #import "MyHandle.h" 2 3 static MyHandle *handle = nil; 4 @implementation MyHandle 5 // 传统写法 6 // 此时如果多个任务并发执行,他就不会满足单例的优点 7 //+ (MyHandle *)shareMyHandle { 8 // if (nil == handle) { 9 // handle = [[MyHandle alloc] init]; 10 // } 11 // return handle; 12 //} 13 14 // 多线程中的写法 15 + (MyHandle *)shareMyHandle { 16 // 在GCD 中保证只执行一次, 用于记录内容是否执行过 17 static dispatch_once_t onceToken; 18 dispatch_once(&onceToken, ^{ 19 handle = [[MyHandle alloc] init]; 20 }); 21 return handle; 22 } 23 24 @end