【iOS】三种单例模式写法
2017-04-01 23:54
429 查看
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
一、(线程不安全)
#import "Singleton.h" @implementation Singleton static Singleton *_singleTon = nil; + (id)sharedSingleton { if (!_singleTon) { _singleTon = [[Singleton alloc] init]; } return _singleTon; } end
二、使用dispatch_once只创建一次
#import "Singleton.h" @implementation Singleton + (id)sharedSingleton { //1.声明一个空的静态的单例对象 static Singleton *_singleTon = nil; //2.声明一个静态的gcd的单次任务 static dispatch_once_t onceTask; //3.执行gcd单次任务:对对象进行初始化 dispatch_once(&onceTask, ^{ _singleTon = [[Singleton alloc] init]; }); return _singleTon; } end
三、重写了系统提供的initialize(线程安全的方式)
#import "Singleton.h" @implementation Singleton static Singleton *_singleTon = nil; + (void)initialize { if (self == [Singleton class]) { _singleTon = [[Singleton alloc] init]; } } + (id)sharedDataCenterByInitialize { return _singleTon; } end
相关文章推荐
- C#单例模式的三种写法
- C#单例模式的三种写法
- IOS开发之自定义Button(集成三种回调模式)
- C#单例模式的三种写法
- iOS开发笔记-两种单例模式的写法
- 单例模式的三种写法
- IOS 中的三种弹框模式
- iOS单例模式和单例的写法
- C#单例模式的三种写法
- C#单例模式的三种写法
- 转:c#单例模式三种写法
- C#单例模式的三种写法(转)
- ios 单例模式的写法
- iOS设计模式-开发思路提问(系列1:一个Button的三种状态怎样切换?)
- 单例模式(Singleton pattern)的三种写法(含枚举实现方式)
- C#单例模式的三种写法-转载
- ios开发的三种常用模式
- 和我一起来学iOS(二)iOS中的一些约定、模式与三种回调机制
- C#单例模式的三种写法
- C#单例模式的三种写法