您的位置:首页 > 其它

OBJ-C中dispatch_once的用法

2015-09-29 08:46 309 查看
见如下代码:

+(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的值改为非零。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: