在项目中,我们需要全局只有一个实例,节省不必要的内存,这时我们就需要使用里单例生成对象。
这时把单例的代码封装成宏,就能方便我们下次使用了。
在.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; \ }