一:单例模式的作用:
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;}