标签:
在软件工程中,单例是一种用于实现单例的数学概念,即将类的实例化限制成仅一个对象的设计模式。
单例就是类,但是该类只能实例化出一个对象。
void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);
如果被多个线程调用,该函数会同步等等直至代码块完成。
+ (AccountManager *)sharedManager { static AccountManager *sharedAccountManagerInstance = nil; static dispatch_once_t predicate;
dispatch_once(&predicate, ^{ sharedAccountManagerInstance = [[self alloc] init]; }); return sharedAccountManagerInstance; }static SKSharedAtles *_shared = nil; + (instancetype)shared{ static dispatch_once_t onceToken; // 第一个参数:predicate // 宏定义:typedef long dispatch_once_t; // 该参数是一个长整型,实际上作为BOOL使用,用于检查该代码块是否已经被调度的谓词 // 第二个参数:block // 宏定义:typedef void (^dispatch_block_t)(void); // 一个代码块,希望在应用的生命周期内仅被调度一次的代码块 dispatch_once(&onceToken, ^{ // 对于本例就用于shared实例的实例化 _shared = (SKSharedAtles *)[SKSharedAtles atlasNamed:@"gameArts-hd"]; }); return _shared; }
AccountManager *accountManager = [AccountManager sharedManager];
AccountManager *accountManager = [[AccountManager alloc] init];
标签:
原文地址:http://www.cnblogs.com/YHStar/p/4307132.html