IOS单例设计模式

例的概念和方法

第一、基本概念

单例模式是一种常用的软件设计模式。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

第二、单例模式的要点与优点

要点;

一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

优点:

  1.实例控制:Singleton会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。

  2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程

 

 

第三、在IOS中使用单例模式的情况

1.如果说创建一个对象会耗费很多系统资源,那么此时采用单例模式,因为只需要一个实例,会节省alloc的时间

2.在IOS开发中,如果很多模块都要使用同一个变量,此时如果把该变量放入单例类,则所有访问该变量的调用变得很容易,否则,只能通过一个模块传递给另外一个模块,这样增加了风险和复杂度

第四、创建单例模式的基本步骤

1.声明一个单例对象的静态实例,并初始化为nil

2.声明一个类的工厂方法,生成一个该类的实例,并且只会生成一个

3.重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实例的时候不产生一个新实例,

4.实现NSCopying协议,覆盖release,autorelease,retain,retainCount方法,以确保只有一个实例化对象

5.在多线程的环境中,注意使用@synchronized关键字

- (id) copyWithZone:(NSZone *)zone //第四步
{
    return self;
}

第五:用宏定义单例,快速创建单例

// @interface

#define singleton_interface(className) \

+(className *)shared##className;

 

// @implementation

#define singleton_implementation(className) \

static className *_instance; \

+(id)allocWithZone:(NSZone *)zone\

{\

    staticdispatch_once_t onceToken; \

   dispatch_once(&onceToken, ^{ \

    _instance =[super allocWithZone:zone];\

    }); \

return _instance;\

} \

+ (className *)shared##className \

{\

    staticdispatch_once_t onceToken; \

   dispatch_once(&onceToken, ^{ \

        _instance =[[self alloc]init]; \

    }); \

    return_instance; \

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值