创建一个单例3步
1.在需要创建单例的类中 #import"HWSingleton.h" ,导入头文件
2.在.h 文件中 加入代码 HWSingletonM
3.在.m 文件中 加入代码 HWSingletonH
--------------- 我是分割线 --------------
Dog.h
#import <Foundation/Foundation.h>
#import "HWSingleton.h"
@interface Dog : NSObject
HWSingletonH
@end.
Dog.m
#import "Dog.h"
@interface Dog ()<NSCopying>
@end
@implementation Dog
HWSingletonM
@end
懵逼了吧, HWSingleton.h里到底是啥?
其实里面就是两个宏,直接上代码
HWSingleton.h中的代码
// .h文件
#define HWSingletonH + (instancetype)shareInstance;
// .m文件
#define HWSingletonM \
\
static id _instance;\
+ (instancetype)allocWithZone:(struct _NSZone *)zone{\
\
static dispatch_once_t onceToken;\
dispatch_once(&onceToken, ^{\
_instance = [super allocWithZone:zone];\
});\
return _instance;\
}\
\
+ (instancetype)shareInstance{\
static dispatch_once_t onceToken;\
dispatch_once(&onceToken, ^{\
_instance = [[self alloc]init];\
});\
return _instance;\
}\
- (id)copyWithZone:(NSZone *)zone{\
return _instance;\
}
网友评论