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/
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接。

posted @ 2014-03-07 19:17  清澈Saup  阅读(1825)  评论(0编辑  收藏  举报