重温-单例模式
2015-09-14 10:44
162 查看
1. 单例设计模式(Singleton)
* 保证某个类创建出来的对象永远只有一个
2. 作用
* 节省内存开销。
* 如果有些数据,整个程序中都用得上,只需要使用同一份资源(保证大家访问的数据是相同一致的)
* 一般来说工具类设计为单例模式合适
3. 实现
* MRC
* ARC
SoundTool.h
View Code
4. 建议包装成宏使用
* 保证某个类创建出来的对象永远只有一个
2. 作用
* 节省内存开销。
* 如果有些数据,整个程序中都用得上,只需要使用同一份资源(保证大家访问的数据是相同一致的)
* 一般来说工具类设计为单例模式合适
3. 实现
* MRC
* ARC
SoundTool.h
#import "SoundTool.h" @implementation SoundTool static id _instance = nil; + (instancetype)allocWithZone:(struct _NSZone *)zone { if (_instance == nil) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); } return _instance; } + (instancetype)shareSoundTool { return [[self alloc] init]; } - (instancetype)init { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super init]; }); return _instance; } + (instancetype)copyWithZone:(struct _NSZone *)zone { return _instance; } + (instancetype)mutableCopyWithZone:(struct _NSZone *)zone { return _instance; } //以下三个为非ARC使用 - (oneway void)release { } - (instancetype)retain { return _instance; } - (NSUInteger)retainCount { return 1; }
View Code
4. 建议包装成宏使用
相关文章推荐
- NSOperation基本操作
- document.getElementById和document.querySelector的区别
- 遍历二叉树
- 用 HTML 标记的古怪代码注释
- Android系统自带样式(android:theme)解析
- matlab 图片批量读取
- 百度前端笔试题目--css 实现一个带尖角的正方形
- PHP数组用法
- Openstack(Kilo)安装系列之环境准备(二)
- NSOperation简单介绍
- GCD的常见用法
- 把word转换成pdf方法与应用
- 升级到ios9 https设置及其bitCode问题解决方案
- 无线路由器一、二、三根天线有什么区别?
- rsync+inotify实现数据的实时同步
- hdu 2871 -Memory Control--线段树
- DSYM结合友盟错误日志联调bug分析错误
- python的内存管理机制
- 电子电路设计之工控设备抗干扰总结(单片机电路及PCB设计注意)
- Spring中配置数据源的4种形式