宏定义快捷应用之创建单例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljcdsg/article/details/51770786
// 宏定义如下:
// .h文件
// 意思为在需要创建成单例的类的.h文件中调用此宏定义
#define SingletonH(name) + (instancetype)shared##name;


// .m文件
// 意思为在需要创建成单例的类的.m文件中调用此宏定义
#define SingletonM(name) \
static id _instance; \
\
+ (instancetype)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; \
}

用法如下:

// 先创建一个需要变成单例的类OneSingleTon类
#import <Foundation/Foundation.h>
@interface OneSingleTon : NSObject
SingletonH(SingleTon)
@end

#import "OneSingleTon"
@implementation OneSingleTon
SingletonM(SingleTon)
@end


// 在需要用到OneSingleTon类的时候
#import "OneSingleTon"

然后直接使用
[OneSingleTon shareSingleTon]; 即可
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页