iOS单例 宏定义

#define singleton_interface(className) 
+ (className *)shared##className;


// @implementation
#define singleton_implementation(className) 
static className *_instance; 
+ (id)allocWithZone:(NSZone *)zone 
{ 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
_instance = [super allocWithZone:zone]; 
}); 
return _instance; 
} 
+ (className *)shared##className 
{ 
static dispatch_once_t onceToken; 
dispatch_once(&onceToken, ^{ 
_instance = [[self alloc] init]; 
}); 
return _instance; 
}

用法:

@interface AccountTool : NSObject
singleton_interface(AccountTool)
@end
@implementation AccountTool
singleton_implementation(AccountTool)
@end
原文地址:https://www.cnblogs.com/damiao/p/4405077.html