OBJ-C中dispatch_once的用法
2015-09-29 08:46
309 查看
见如下代码:
首先声明了2个静态(全局)变量。无论你将它们放在方法内部还是外部都没什么关系。它们都被初始化为0(nil)。
sharedInstance存储单例类实例的引用,而onceToken是一个有趣的变量,实际它的数据类型是long。
dispatch_one函数仅仅运行block一次!传入一个指向onceToken的变量。仅仅当onceToken为0时block才会运行,而当dispatch_once运行过block之后,会将onceToken的值改为非零。
+(GameState*)sharedGameState{ static GameState *sharedInstance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [GameState new]; }); return sharedInstance; }
首先声明了2个静态(全局)变量。无论你将它们放在方法内部还是外部都没什么关系。它们都被初始化为0(nil)。
sharedInstance存储单例类实例的引用,而onceToken是一个有趣的变量,实际它的数据类型是long。
dispatch_one函数仅仅运行block一次!传入一个指向onceToken的变量。仅仅当onceToken为0时block才会运行,而当dispatch_once运行过block之后,会将onceToken的值改为非零。
相关文章推荐
- (ZT)Why BIOS loads MBR into 0x7C00 in x86 ?
- C++ Primer 学习笔记_29_STL实践与分析(3) --操作步骤集装箱(下一个)
- Java 7 中 NIO.2 的使用——第四节 文件和目录
- 一种特别适用的数字分区函数,分享一下
- HTTP报文-->MVC
- 国际化信息-->MVC
- 事务基础知识-->Spring事务管理
- 每天一个linux命令(9):touch 命令
- js计算系统当前日期是星期几的几种方法
- 心灵鸡汤050929
- 线程本地变更ThreadLocal-->Spring事务管理
- IOS框架图
- 给新手的 10 个有用 Linux 命令行技巧
- area(省市区版)
- ios开发 常用代码整理
- 注解-->Spring配置
- 程序猿是种病,得治!百度电商当年之败就是样板
- XML基础知识-->Spring配置
- 软件版本命名规范
- 属性编辑器PropertyEditor-->Spring IoC