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

 

posted @ 2015-04-08 23:16  嗷大喵  阅读(276)  评论(0编辑  收藏  举报