iOs开发 单例模式 省懒宏

#define singleton_h(name) + (instancetype)shared##name;

#if __has_feature(obj_arc)
#define singleton_m(name)static id _instance;+ (instancetype)shared##name{static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_instance = [[self alloc] init];});return _instance;}+ (id)allocWithZone:(struct _NSZone *)zone{static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{_instance = [super allocWithZone:zone];});return _instance;}+ (id)copyWithZone:(struct _NSZone *)zone{return _instance;}

#else
#define singleton_m(name)static id _instance;+ (instancetype)shared##name{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _instance = [[self alloc] init];    });    return _instance;}+ (id)allocWithZone:(struct _NSZone *)zone{    static dispatch_once_t onceToken;    dispatch_once(&onceToken, ^{        _instance = [super allocWithZone:zone];    });    return _instance;}+ (id)copyWithZone:(struct _NSZone *)zone{    return _instance;}- (oneway void)release{}- (id)autorelease{    return _instance;}- (id)retain{    return _instance;}- (NSUInteger)retainCount{    return 1;}
#endif

 

iOs开发 单例模式 省懒宏,布布扣,bubuko.com

iOs开发 单例模式 省懒宏

上一篇:关于移动端图片处理技巧


下一篇:iOS滤镜 和 ios6中的CoreImage技术