iOS单例模式

转载 2015年07月08日 11:01:03

IOS单例模式(Singleton)

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

1.单例模式的要点:

  显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。

2.单例模式的优点:

  1.实例控制:Singleton 会阻止其他对象实例化其自己的 Singleton 对象的副本,从而确保所有对象都访问唯一实例。
  2.灵活性:因为类控制了实例化过程,所以类可以更加灵活修改实例化过程
 
IOS中的单例模式
  在objective-c中要实现一个单例类,至少需要做以下四个步骤:
  1、为单例对象实现一个静态实例,并初始化,然后设置成nil,
  2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
  3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
  4、适当实现allocWitheZone,copyWithZone,release和autorelease。
下面以SurveyRunTimeData为例子:
 
static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance  //第二步:实例构造检查静态实例是否为nil
{
    @synchronized (self)
    {
        if (sharedObj == nil)
        {
            [[self alloc] init];
        }
    }
    return sharedObj;
}

+ (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法
{
    @synchronized (self) {
        if (sharedObj == nil) {
            sharedObj = [super allocWithZone:zone];
            return sharedObj;
        }
    }
    return nil;
}

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

- (id) retain
{
    return self;
}

- (unsigned) retainCount
{
    return UINT_MAX;
}

- (oneway void) release
{
    
}

- (id) autorelease
{
    return self;
}

- (id)init
{
    @synchronized(self) {
        [super init];//往往放一些要初始化的变量.
        return self;
    }
}

iOS单例模式

  • 2015年08月01日 17:34
  • 62KB
  • 下载

iOS 单例模式

  • 2013年08月21日 12:18
  • 119KB
  • 下载

ios oc中的静态方法和实例方法、单例模式

静态方法与实例方法 方法是类的行为,写在接口和实现两个文件中。在接口部分声明方法,在实现部分实现方法。 1、类方法与实例方法 Objective-C中的类可以声明两种类型的方法:实例方法和类方法...

IOS单例模式Demo

  • 2015年08月10日 13:40
  • 66KB
  • 下载

IOS_单例模式抽宏(非ARC)

  • 2015年05月26日 17:13
  • 428B
  • 下载

iOS之单例模式常见写法

单例模式可能是设计模式中最简单的形式了,这一模式的意图就是使得类中的一个对象成为系统中的唯一实例。它提供了对类的对象所提供的资源的全局访问点。因此需要用一种只允许生成对象类的唯一实例的机制。下面让我们...

ios单例模式demo

  • 2013年10月30日 10:41
  • 76KB
  • 下载

IOS_单例模式

  • 2015年05月26日 17:11
  • 426B
  • 下载

iOS开发实践之多线程(单例模式)

单例模式的作用:可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问,从而方便地控制了实例个数,并节约系统资源。     单例模式的使用场合: 在整个应用程序中,共享一份资源(这...

IOS_单例模式(ARC).

  • 2015年05月26日 17:09
  • 424B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS单例模式
举报原因:
原因补充:

(最多只允许输入30个字)