iOS- 封装单例宏
在项目中,我们需要全局只有一个实例,节省不必要的内存,这时我们就需要使用里单例生成对象。
这时把单例的代码封装成宏,就能方便我们下次使用了。
如果此处代码查看不方便可以下载我的小工具工程,里面包含了我自己积累的所有工具助手类
http://git.oschina.net/shaneZhang/myToolClass
在.h .m里直接导入头文件,调用 传入类名即可!
singleton_interface(DataManager)
singleton_implementation(DataManager)
// .h
#define singleton_interface(className) + (instancetype)shared##className;
// .m
// 最后一句不要斜线
#define singleton_implementation(className) \
static className *_instace; \
\
+ (id)allocWithZone:(struct _NSZone *)zone \
{ \
static dispatch_once_t onceToken; \
dispatch_once(&onceToken, ^{ \
_instace = [super allocWithZone:zone]; \
}); \
\
return _instace; \
} \
\
+ (instancetype)shared##className \
{ \
if (_instace == nil) { \
_instace = [[className alloc] init]; \
} \
\
return _instace; \
}


