以下是.h文件,使用时,直接在需要实现单例模式的类中导入头文件即可。
// .h文件#define DenglSingletonH(name) + (instancetype)shared##name;// .m文件#define DenglSingletonM(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; \}
使用方法:
1.在.h中导入头文件名称
2.在.h文件中,DenglSingletonH(ObjectName)
3.在.m文件中,DenglSingletonM(ObjectName)