2016.01.22 单例模式(Singleton)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.01.22 单例模式(Singleton)相关的知识,希望对你有一定的参考价值。

单例模式:整个程序的一个类只能有一个实例对象:(UIApplication、NSUserDefaults等都是ios中的系统单例)

        1.物理设备  eg:打印机

        2.不可多个同时存在的资源  eg:数据库

单例的写法:

  这是第一种,也是最简单、最常用的一种:

 1 #import "FileOpration.h"
 2 
 3 static FileOpration *instance = nil;        //静态变量,从定义开始到整个程序结束
 4 
 5  @implementation FileOpration 
 6 
 7 + (instancetype)sharedFileOpration{
 8 
 9     if (instance == nil) {
10         instance = [[FileOpration alloc]init];
11     }
12 
13     return instance;
14 } 
15 
16 @end

  第二种写法,加入了线程,以及重写alloc方法

+ (FileOperation *)sharedManager{  
        static FileOperation *instance = nil;  
        static dispatch_once_t predicate;  
        dispatch_once(&predicate, ^{  
                instance = [[self alloc] init];   
        });  
    return ManagerInstance;  
}

/*
  重写alloc方法,在调用alloc方法的时候实际上是默认调用allocWithZone
  */
+ (instancetype)allocWithZone:(struct _NSZone *)zone{
    return [self sharedOperation];
}

 

以上是关于2016.01.22 单例模式(Singleton)的主要内容,如果未能解决你的问题,请参考以下文章

单例模式(singleton)

单例模式(singleton)

Singleton Pattern (单例模式)

java设计模式学习 ----- 单例模式(Singleton)

一天一个设计模式 -单例模式(Singleton)

设计模式:单例模式(singleton)