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

 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类名] 即可

posted @ 2016-07-16 12:52  hissia  阅读(439)  评论(0编辑  收藏  举报