单列的演练
2015-11-22 15:02
253 查看
特点:
1.内存中只有唯一一个副本
2.提供一个全局的访问点->类方法能够方便访问
目前学过的单列:
- UIApplication
- NSFileManager
- NSUseDefaults
- NSNotifcationCenter;
在iOS 开发中,开发的使用非常频繁,公司面试要求手写单列
#import
<Foundation/Foundation.h>
@interface
diotm : NSObject
//全局访问点
+ (instancetype)sharDitem;
/**
* 面试中手写单列,写以下代码即可
关于
allocWithZone
能够保证无论怎么实例化对象,内存中都只有唯一的一个副本
但是在很多时候,会希望,通过全局访问入口,获得一个单列对象,同时又可以自己实例化新的副本
*/
@implementation
diotm
+ (instancetype)sharDitem{
//定义一个静态变量来记录对象
static
id insd;
//同步
static
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
insd = [[self
alloc]init];
});
return
insd;
}
内存地址一样
八,演示又可以单列,又可以实例化
十.互斥锁也可以进行单列
+ (instancetype)sysnhu{
static
id insd;
@synchronized(self) {
if
(insd == nil) {
insd = [[self
alloc]init];
}
}
return
insd;
}
十一,互斥锁和单列进行比较
1.内存中只有唯一一个副本
2.提供一个全局的访问点->类方法能够方便访问
目前学过的单列:
- UIApplication
- NSFileManager
- NSUseDefaults
- NSNotifcationCenter;
在iOS 开发中,开发的使用非常频繁,公司面试要求手写单列
#import
<Foundation/Foundation.h>
@interface
diotm : NSObject
//全局访问点
+ (instancetype)sharDitem;
/**
* 面试中手写单列,写以下代码即可
关于
allocWithZone
能够保证无论怎么实例化对象,内存中都只有唯一的一个副本
但是在很多时候,会希望,通过全局访问入口,获得一个单列对象,同时又可以自己实例化新的副本
*/
@implementation
diotm
+ (instancetype)sharDitem{
//定义一个静态变量来记录对象
static
id insd;
//同步
static
dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
insd = [[self
alloc]init];
});
return
insd;
}
内存地址一样
八,演示又可以单列,又可以实例化
十.互斥锁也可以进行单列
+ (instancetype)sysnhu{
static
id insd;
@synchronized(self) {
if
(insd == nil) {
insd = [[self
alloc]init];
}
}
return
insd;
}
十一,互斥锁和单列进行比较
相关文章推荐
- hiho 12 树的dp
- LRU java算法实现
- 图片处理工具类
- DotNetBar for Windows Forms 12.5.0.2_冰河之刃重打包版原创发布-带官方示例程序版
- 多线程 下载网络图片主线程实现
- RTMP协议与RTSP协议比较
- cl(ml )不是内部或外部命令
- Hive常用命令
- 在Storyboard实现国际化语言和代码实现国际化语言
- 文章标题
- gdb InnoDB Redundant Row Format
- 国际化语言
- hdu 5570 balls(期望好题)
- List sublist的toIndex不能超过500
- 大数据时代对企业营销行为的价值
- 4-7 统计某类完全平方数
- layer的核心动画的基本属性
- C语言素数的多种求法
- DH11数字温湿度传感器
- git remote基本使用