谈谈对单例的理解
2016-02-18 19:58
162 查看
在iOS开发过程有许多设计模式,单例模式是较常用的。因此理解单例模式也是为更好的开发做准备。
首先,得需要知道什么是单例?
单例,字面理解就是单独的实例,所以说整个项目中该类的对象只能被初始化一次,无论什么时候或在什么地方创建该类得对象都是一个。我们可以根据它的这个特性来判断,做项目的时候哪些应该用单例。比如整个项目中共用的资源就可以,OC中UIApplication也是一个单例,还有很多单例。
其次知道单例要如何实现?
我这里只写一种单例代码,代码可能考虑的不周全,以后有什么补充的再来修改。
代码如下:
#import
"MyClass.h"
@implementation MyClass
static MyClass *_class;
+ (instancetype)allocWithZone:(struct
_NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_class = [super
allocWithZone:zone];
});
return _class;
}
+ (instancetype)sharedClass{
if (_class ==
nil) {
_class = [[self
alloc]
init];
}
return _class;
}
@end
首先,得需要知道什么是单例?
单例,字面理解就是单独的实例,所以说整个项目中该类的对象只能被初始化一次,无论什么时候或在什么地方创建该类得对象都是一个。我们可以根据它的这个特性来判断,做项目的时候哪些应该用单例。比如整个项目中共用的资源就可以,OC中UIApplication也是一个单例,还有很多单例。
其次知道单例要如何实现?
我这里只写一种单例代码,代码可能考虑的不周全,以后有什么补充的再来修改。
代码如下:
#import
"MyClass.h"
@implementation MyClass
static MyClass *_class;
+ (instancetype)allocWithZone:(struct
_NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_class = [super
allocWithZone:zone];
});
return _class;
}
+ (instancetype)sharedClass{
if (_class ==
nil) {
_class = [[self
alloc]
init];
}
return _class;
}
@end
相关文章推荐
- 举例讲解C#编程中对设计模式中的单例模式的运用
- php设计模式之单例模式实例分析
- PHP基于单例模式实现的数据库操作基类
- JavaScript编程的单例设计模讲解
- C#设计模式之单例模式实例讲解
- Javascript实现单例模式
- JS模式之单例模式基本用法
- 深入理解JavaScript系列(25):设计模式之单例模式详解
- Java单例模式、饥饿模式代码实例
- Android源码学习之单例模式应用及优点介绍
- C++设计模式之单例模式
- C#窗口实现单例模式的方法
- Java线程安全中的单例模式
- PHP单例模式详细介绍
- PHP 面向对象程序设计(oop)学习笔记(三) - 单例模式和工厂模式
- php实现singleton()单例模式实例
- PHP中数据库单例模式的实现代码分享
- php利用单例模式实现日志处理类库
- 浅析php单例模式
- php单例模式实现方法分析