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