创建和使用单例模式(宏)

 1 // .h文件
 2 #define ZWSingletonH(name) + (instancetype)shared##name;
 3 
 4 // .m文件
 5 #define ZWSingletonM(name) 
 6 static id _instance; 
 7  
 8 + (instancetype)allocWithZone:(struct _NSZone *)zone 
 9 { 
10     static dispatch_once_t onceToken; 
11     dispatch_once(&onceToken, ^{ 
12         _instance = [super allocWithZone:zone]; 
13     }); 
14     return _instance; 
15 } 
16  
17 + (instancetype)shared##name 
18 { 
19     static dispatch_once_t onceToken; 
20     dispatch_once(&onceToken, ^{ 
21         _instance = [[self alloc] init]; 
22     }); 
23     return _instance; 
24 } 
25  
26 - (id)copyWithZone:(NSZone *)zone 
27 { 
28     return _instance; 
29 }

注:上面代码只需要在.h文件夹中即可

如果想要使用的话,可以直接在需要设置单例模式类的.h文件中输入:ZWSingletonH(类名)

                        .m文件中输入:ZWSingletonM(类名)

需要用的时候直接:[类名 + shared类名] 即可

原文地址:https://www.cnblogs.com/hissia/p/5676016.html