首页 > 代码库 > iOs开发 单例模式 省懒宏
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。