IOS第二天多线程-04简化单例模式

******HMSingleton-ARC.h

// .h文件
#define HMSingletonH(name) + (instancetype)shared##name;

// .m文件
#define HMSingletonM(name) \
static id _instance; \
 \
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [super allocWithZone:zone]; \
    }); \
    return _instance; \
} \
 \
+ (instancetype)shared##name \
{ \
    static dispatch_once_t onceToken; \
    dispatch_once(&onceToken, ^{ \
        _instance = [[self alloc] init]; \
    }); \
    return _instance; \
} \
 \
- (id)copyWithZone:(NSZone *)zone \
{ \
    return _instance; \
} 

****.m的文件中

@implementation HMMovieTool
HMSingletonM(MovieTool)
@end

 

posted @ 2015-09-09 16:27  iso  阅读(124)  评论(0编辑  收藏  举报