单例的实现(dispatch_once_t synchronized)
使用这两种方式都能够实现单例,简单快速,在ARC模式运行正常
+(instancetype)config{
static HConfig *instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//初始化
instance = [[HConfig alloc] init];
});
return instance;
}
+(instancetype)configSync{
static HConfig *instance;
//用同步锁来实现单例
@synchronized(self){
if(instance == nil){
instance = [[HConfig alloc] init];
}
}
return instance;
}
调用的时候打印正常,是同一个对象
以下是调用的打印方法
HConfig *config1 = [HConfig config];
HConfig *config2 = [HConfig config];
NSLog(@"config1 %@",config1);
NSLog(@"config2 %@",config2);
HConfig *config3 = [HConfig configSync];
HConfig *config4 = [HConfig configSync];
NSLog(@"config3 %@",config3);
NSLog(@"config4 %@",config4);
运行效率
dispatchoncet 相对高一些