iOS- 封装单例宏

作者: shaneZhang 分类: ios技术 发布时间: 2014-05-01 14:05

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

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

如果此处代码查看不方便可以下载我的小工具工程,里面包含了我自己积累的所有工具助手类

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; \
}

如果觉得我的文章对您有用,请随意打赏。如果有其他问题请联系博主QQ(909491009)或者下方留言!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注