#define SingletonInterface(name) +(instancetype)share##name
#if __has_feature(objc_arc)
// ARC
#define SingletonImplementation(name) \
+(instancetype)share##name \
{ \
return [[self alloc] init]; \
} \
+(instancetype)allocWithZone : (struct _NSZone *)zone \
{ \
static id instance; \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
instance = [super allocWithZone:zone]; \
}); \
return instance; \
} \
-(id)copyWithZone : (NSZone *)zone \
{ \
return self; \
} \
-(id)mutableCopyWithZone : (NSZone *)zone \
{ \
return self; \
}
#else
// MRC
#define SingletonImplementation(name) \
+(instancetype)share##name \
{ \
return [[self alloc] init]; \
} \
+(instancetype)allocWithZone : (struct _NSZone *)zone \
{ \
static id instance; \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
instance = [super allocWithZone:zone]; \
}); \
return instance; \
} \
-(id)copyWithZone : (NSZone *)zone \
{ \
return self; \
} \
-(id)mutableCopyWithZone : (NSZone *)zone \
{ \
return self; \
} \
-(oneway void)release{} - (instancetype)retain \
{ \
return self; \
} \
-(NSUInteger)retainCount \
{ \
return MAXFLOAT; \
}
#endif /* Singleton_h */
Singleton(宏单例写法)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- pragma mark 单例ARC和MRC写法 (Singleton) pragma mark 概念 pragm...
- Unity技术博客 - 单例的使用(单例的几种写法和一个实例)http://www.jianshu.com/p/1...