写高质量OC代码52建议总结:45.使用dispatch_once来执行只需要运行一次的线程安全代码
来源:互联网 发布:网络直播间 编辑:程序博客网 时间:2024/05/29 15:07
单例模式,该方法只会返回全类共用的单例实例,不会每次调用都创建新的实例。
总结:
1.GCD提供的dispatch_once函数可以很容易实现单例。
2.标记声明在static或global作用域中。
@implementation EOCClass +(id)sharedInstance { static EOCClass *sharedInstance = nil; @synchronized(self) { if (!sharedInstance) { sharedInstance = [[self alloc] init]; } } return sharedInstance; } @endGCD引入了一项新特性,实现单例更为容易。
void dispatch_once(dispatch_once_t *token, dispatch_block_t block);这个函数保证块必定会执行,而且只执行一次。这个操作完全是线程安全的。
+(id)sharedInstance { static EOCCLass *sharedInstance = nil; stat icdispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance; }dispatch_once可以简化代码,并且保证线程安全。每次调用都必须使用完全相同的标记dispatch_once_t,标记要证明成static。这个函数用“原子访问”查询标记,以判断代码是否已经执行过。后者比前者速度快一倍。
总结:
1.GCD提供的dispatch_once函数可以很容易实现单例。
2.标记声明在static或global作用域中。
阅读全文
0 0
- 写高质量OC代码52建议总结:45.使用dispatch_once来执行只需要运行一次的线程安全代码
- 写高质量OC代码52建议总结:44.通过Dispatch Group机制,根据系统资源状况来执行任务
- 写高质量OC代码52建议总结:32.编写“异常安全代码”时留意内存管理问题
- 写高质量OC代码52建议总结:36.不要使用retainCount
- 写高质量OC代码52建议总结:46.不要使用dispatch_get_current_queue
- 写高质量OC代码52建议总结:31.在dealloc方法中只释放引用并解除监听
- 写高质量OC代码52建议总结:43.掌握GCD及操作队列的使用时机
- 写高质量OC代码52建议总结:38.为常用的块创建typedef
- 写高质量OC代码52建议总结:39.用handler块降低代码分散程度
- 编写高质量OC代码52建议总结:19.使用清晰而协调的命名方式
- dispatch_once让代码只执行一次
- 写高质量OC代码52建议总结:28.通过协议提供匿名对象
- 写高质量OC代码52建议总结:30.以ARC简化引用计数
- 写高质量OC代码52建议总结:33.以弱引用避免保留环
- 写高质量OC代码52建议总结:35.用僵尸对象调试内存管理问题
- 写高质量OC代码52建议总结:37.理解“块”
- 写高质量OC代码52建议总结:41.多用派发列队,少用同步锁
- 写高质量OC代码52建议总结:42.多用GCD,少用performSelector系列方法
- 工作第四周了,比急忙,好久没总结啦
- 风险预警·如何预防开发问题流到生产
- 《邓小平时代》读后
- 保持Android Service在手机休眠后继续运行
- es6 模块化语法(十七)
- 写高质量OC代码52建议总结:45.使用dispatch_once来执行只需要运行一次的线程安全代码
- java程序导出jar包运行
- 百练_2869:计算费马数
- C语言位运算应用一:求一个数的二进制表示中1的个数
- Python正则表达式
- 使用WITH AS提高性能简化嵌套SQL
- Matlab中函数使用
- Docker学习笔记(一) 简介
- webpack+vue 开发app(一)