博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例的封装
阅读量:7152 次
发布时间:2019-06-29

本文共 826 字,大约阅读时间需要 2 分钟。

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

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

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

你可能感兴趣的文章
定时任务redis锁+自定义lambda优化提取冗余代码
查看>>
linux每日命令(36):wc命令
查看>>
数论基础(附加例题)
查看>>
web应用,http协议简介,web框架
查看>>
递归找零问题
查看>>
纯手工编写的PE可执行程序
查看>>
实验四
查看>>
go标准库的学习-sync互斥
查看>>
FZU.Software Engineering1816 · First Homework -Preparation
查看>>
python学习day-10 模块补充
查看>>
mysql连接慢,修改配置文件
查看>>
数轴染色
查看>>
LNMP环境源码搭建
查看>>
配置webpack.config.js中的文件
查看>>
linux下安装jdk
查看>>
统计学习方法 李航---第5章 决策树
查看>>
java中绘图-----那个鼠标等的监听我还是不太会,,好苦恼啊。不知道这些监听事件是怎么区分的...
查看>>
java从键盘输入若干数,求其最大值,最小值,平均值。等等
查看>>
volatile
查看>>
Ali流量控制中间件Sentinel
查看>>