一、单例模式
保证在程序运行过程中,一个类只有一个实例,该实例易于外界访问,方便对实例个数的控制并节约系统资源。
特点:
1、在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次),一般用于工具类。很多单例存在,例如UIApplication、NSNotification、NSFileManager、NSUserDefaults等. 2、单例对象一旦建立,对象指针保存在静态区,单例对象在堆中分配的内存空间,会在应用程序终止后才被释放。3、单例类无法继承,难以进行类的扩展。
二、ARC中单例的实现步骤
1、在类内部提供一个static修饰的全局变量
2、提供一个类方法 ,方法名:+share类名 或者 +default类名,方便外界访问
3、重写+allocWithZone方法,保证只为单例对象分配一次内存空间,实现一个类只有一个实例。
4、重写-copyWithZone方法和-mutableCopyWithZone方法,遵守NSCopying协议、NSMutableCopying协议,可以通过copy、mutableCopy方式创建对象。
#import "Tools.h"
@implementation Tools
// 创建静态对象 防止外部访问
static Tools *_instance;
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
// @synchronized (self) {
// // 为了防止多线程同时访问对象,造成多次分配内存空间,所以要加上线程锁
// //方案一、加互斥锁