天天看点

OBJ-C中dispatch_once的用法

见如下代码:

首先声明了2个静态(全局)变量。无论你将它们放在方法内部还是外部都没什么关系。它们都被初始化为0(nil)。

sharedinstance存储单例类实例的引用,而oncetoken是一个有趣的变量,实际它的数据类型是long。

dispatch_one函数仅仅运行block一次!传入一个指向oncetoken的变量。仅仅当oncetoken为0时block才会运行,而当dispatch_once运行过block之后,会将oncetoken的值改为非零。