单例理解以及我们为什么要使用单例

来源:互联网 发布:单片机按键程序 编辑:程序博客网 时间:2024/06/05 11:20

我们通常使用单例的作用:

保证程序在运行过程中,一个类只有一个实例化对象,这个实例对象容易被外界访问!控制实例对象的个数(只有一个),节约系统资源

使用的场合:

在整个应用程序中,共享一份资源(这份资源只需要创建初始化一次).例如:一些网络工具类/沙盒类/打印机/视图窗口/等等

单例的种类:

分为懒汉式(用到时候在加载).恶汉式(程序已启动就加载)

单例实现方法:

互斥锁 dispatch_once

单例在内存中保存的位置:

static修饰的,存在常量区

单例的声明周期:

跟随着AppDelegate的销毁而销毁

单例需要重写方法:

模仿苹果源生的写法创建单例的方法名都是加shared+++xxx的一个形式,这个也是大家使用单例时默认的方法但是为了防止单例被使用alloc init的方法创建出来的需要重写 +(id)allocWithZone:(struct_NSZone*)zone(该方法在调用 alloc init方法时会自定调用,保证单例开辟一个空间)同时为了防止使用copy创建单例需要重写 +(id)copyWithZone:(struct_NSZone)zone 最后提供一个外界方法创建唯一的实例 +(instance)shared+xxxx;

在MRC模式中增加如下方法的实现:

-(instancetype)retain{return self;}

-(NSUInteger)retainCount{return 1;}

-(oneway void)release{}

-(instancetype)autorelease{return self;}


0 0
原创粉丝点击