单例的两种实现方式
2016-02-18 20:51
169 查看
在iOS开发中,很多地方会用到单例模式。单例可以保证在程序的运行过程中,一个类只有一个实例,而且该实例易于外界访问,从而方便的控制实例个数,并且节约系统资源。
单例在整个应用程序中,共享一份资源,且这份资源只需要创建一次即可。单例的实现方式有两种。
第一种,同步锁实现单例。
+(instancetype)sharedPerson{
static LYQPerson *instance;
@synchronized(self) {
if(!instance){
instance = [LYQPerson new];
}
}
return instance;
}
第二种,GCD实现单例。
GCD实现单例首先判断静态区的onceToken,当为0的时候执行block,非0不执行。因此GCD实现的单例效率高,且线程安全。
+(instancetype)sharedPerson{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [LYQPerson new];
});
return instance;
}
单例在整个应用程序中,共享一份资源,且这份资源只需要创建一次即可。单例的实现方式有两种。
第一种,同步锁实现单例。
+(instancetype)sharedPerson{
static LYQPerson *instance;
@synchronized(self) {
if(!instance){
instance = [LYQPerson new];
}
}
return instance;
}
第二种,GCD实现单例。
GCD实现单例首先判断静态区的onceToken,当为0的时候执行block,非0不执行。因此GCD实现的单例效率高,且线程安全。
+(instancetype)sharedPerson{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [LYQPerson new];
});
return instance;
}
相关文章推荐
- 设计模式之创建型模式 - 特别的变量问题
- C#单例模式(Singleton Pattern)实例教程
- 解析Java线程同步锁的选择方法
- php设计模式之单例、多例设计模式的应用分析
- javascript 单例/单体模式(Singleton)
- C++单例模式应用实例
- 浅谈Java编程中的单例设计模式
- Python单例模式实例分析
- Java单例模式实例简述
- 详解iOS中多线程app开发的GCD队列的使用
- JAVA语言泛型编程实现单例模式
- Swift之单例模式
- iOS设计模式之单例模式
- python logging 单例模式范例
- 单例模式
- 单例模式扩展
- gcd
- OC多线程
- 多线程应该知道的那几件事 GCD NSThread NSOperation
- 多线程编程4 - GCD