2016 - 1- 19 GCD单例模式

mac2022-06-30  22

一:单例模式的作用:

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; }

 

转载于:https://www.cnblogs.com/BJTUzhengli/p/5141813.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)