2016 - 1- 19 GCD单例模式

时间:2023-03-09 01:32:23
2016 - 1- 19 GCD单例模式

一:单例模式的作用:

1.可以保证在程序运行过程中,一个类只有一个实例,而且易于外界访问。2

2.从而方便的控制了实例的个数,节约系统资源。

二:单例模式的应用场景:

代码:

1.在一个需要实现单例模式的类中重写allocWithZone:方法,因为无论使用多少次alloc始终只会执行一次,而且在使用alloc方法时,最终也调用的是allocWithZone:这个方法

static CZPerson *_person;
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_person = [super allocWithZone:zone];
});
return _person;
}

2.为了方便调用,也需要实现一个sharedPerson的方法,需要注意的是,这里最好也使用

static dispatch_once_t onceToken;
+(instancetype)sharedPerson{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_person = [[self alloc] init];
});
return _person;
}

3.也需要重写copy这个对象方法,需要注意的是,这里可以直接返回_person,因为copy是个对象方法,也就是说要调用这个方法,就证明_person已经不为空了。

- (id)copyWithZone:(NSZone *)zone
{
return _person;
}