iOS- 封装单例宏

在项目中,我们需要全局只有一个实例,节省不必要的内存,这时我们就需要使用里单例生成对象。

这时把单例的代码封装成宏,就能方便我们下次使用了。

在.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; 
}

作者: 清澈Saup
出处: http://www.cnblogs.com/qingche/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

原文地址:https://www.cnblogs.com/qingche/p/3587059.html