// .h
#define singleton_interface(class) + (instancetype)shared##class;
// .m
#define singleton_implementation(class) \
static class *
_instance; \
\
+ (
id)allocWithZone:(
struct _NSZone *
)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^
{ \
_instance =
[super allocWithZone:zone]; \
}); \
\
return _instance; \
} \
\
+ (instancetype)shared##
class \
{ \
if (_instance ==
nil) { \
_instance = [[
class alloc] init]; \
} \
\
return _instance; \
}
转载于:https://www.cnblogs.com/ningmengcao-ios/p/5846410.html