主要思路是单例是靠 dispatch_once_t 类型的 token 来确保初始化,只执行一次,来实现单例。
static dispatch_once_t * once_token_factory;
+ (ZDocUIFactory *)sharedInstance{
static dispatch_once_t onceToken;
once_token_factory = &onceToken;
static id factory = nil;
dispatch_once(&onceToken, ^{
factory = [[ZDocUIFactory alloc] init];
});
return factory;
}
- (void)destoryFactory{
*once_token_factory = 0;
}