单例的封装

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

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

在.h .m里直接导入头文件,调用 传入类名即可!

 

singleton_interface(DataManager)

singleton_implementation(DataManager)

 1 // .h
 2 #define singleton_interface(className) + (instancetype)shared##className;
 3 
 4 // .m
 5 // 最后一句不要斜线
 6 #define singleton_implementation(className) \
 7 static className *_instace; \
 8 \
 9 + (id)allocWithZone:(struct _NSZone *)zone \
10 { \
11     static dispatch_once_t onceToken; \
12     dispatch_once(&onceToken, ^{ \
13         _instace = [super allocWithZone:zone]; \
14     }); \
15     \
16     return _instace; \
17 } \
18 \
19 + (instancetype)shared##className \
20 { \
21     if (_instace == nil) { \
22         _instace = [[className alloc] init]; \
23     } \
24     \
25     return _instace; \
26 }
单例

 

转载于:https://www.cnblogs.com/zhangyang17/p/3590831.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值