单例的两种写法
来源:互联网 发布:mac a1181 t7200 编辑:程序博客网 时间:2024/06/08 18:40
单例的特点:
1,内存中只有一个唯一的副本
2,GCD写法的效率比自旋锁效率快很多
long largeNumber = 1000 *1000;
// 1.dispatch_once
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
for (long i= 0; i < largeNumber; ++i) {
[xxxx sharedDemo];
}
NSLog(@"dispatch_once %f", CFAbsoluteTimeGetCurrent() -start);
// 2.互斥锁
start =CFAbsoluteTimeGetCurrent();
for (long i= 0; i < largeNumber; ++i) {
[xxxx syncDemo];
}
NSLog(@"互斥锁%f", CFAbsoluteTimeGetCurrent() - start);
xxxx.h文件:
//GCD实现单例
+ (instancetype)sharedDemo;
//互斥锁实现单例
+ (instancetype)syncDemo;
//GCD
xxxx.m 文件:
+ (instancetype)sharedDeno{
static id instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
instance = [[self alloc]init];
});
//互斥锁
+ (instancetype)syncDemo{
static id sync;
@synchronized(self) {
if (sync == nil){
sync = [[self alloc]init];
}
}
return sync;
}
1,内存中只有一个唯一的副本
2,GCD写法的效率比自旋锁效率快很多
xxxx.h文件:
//GCD实现单例
+ (instancetype)sharedDemo;
//互斥锁实现单例
+ (instancetype)syncDemo;
//GCD
xxxx.m 文件:
+ (instancetype)sharedDeno{
static id instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{
instance = [[self alloc]init];
});
//互斥锁
+ (instancetype)syncDemo{
static id
@synchronized(self) {
return sync;
}
0 0
- 单例的两种写法
- 单例模式的两种写法
- 单例的两种写法
- 单例模式的两种写法
- 单例的两种写法
- 单例的两种写法
- 单例模式常用的的两种写法
- 设计模式之单例模式的两种写法
- 单例模式的两种写法(刚刚)
- 单例模式的两种常见写法
- java 单例模式的两种常用写法
- iOS两种官方的单例模式写法
- 单例模式常用的两种写法
- ios 单例模式 两种写法
- operator+单参数和双参数的两种写法
- 单例模式的两种线程安全并且效率的写法
- 面试题(单例模式两种写法)
- Android 工具类的两种写法---单例模式与静态方法
- iOS压缩图片处理
- iOS中POST上传文件的实现
- AFN上传文件和检测网络状态
- KVO内部的实现原理
- GCD的相关知识
- 单例的两种写法
- iOS中block的使用注意
- 深复制和浅复制的概念
- iOS中程序代码存储区块
- GIT团队开发操作
- Java 回顾笔记5(上午)_static
- libvirt源代码安装
- jQuery之ajax
- UIView与CALayer的区别,很详细