ios 单例(arc版本)
来源:互联网 发布:计算机算法视频教程 编辑:程序博客网 时间:2024/06/11 12:39
我们知道C++等语言只要通过静态对象的检测并把构造函数,赋值构造函数声明为私有成员函数就可以实现单例了。
oc也是这个原理,但是oc没有构造函数的概念,那是不是通过定义全局的静态类实例了,再接口的每次判断该实例变量是否初始化就可以了:
static singleObject *instanse;
@implementation singleObject
+(singleObject*)shareObject{
@synchronized(self){
if (instanse == nil) {
instanse = [super allocWithZone:NULL];
}
}
return instanse;
}
@implementation singleObject
+(singleObject*)shareObject{
@synchronized(self){
if (instanse == nil) {
instanse = [super allocWithZone:NULL];
}
}
return instanse;
}
但是通过如下的调用:
singleObject *obj1 = [singleObject shareObject];
singleObject *obj2 = [[singleObject alloc] init];
你会发现obj1和obj2的地址并不相同!所以我们得想办法覆盖掉alloc以copy函数:
+(id)allocWithZone:(struct _NSZone *)zone{
return [self shareObject];
}
-(id)copyWithZone:(NSZone *)zone{
return self;
}
在测试一下,看obj1和obj2的地址是不是一样!
@end
0 0
- ios 单例(arc版本)
- iOS - ARC创建单例
- IOS单例模式(MRC下和ARC下)
- iOS开发多线程篇—单例模式(ARC)
- iOS(ARC和MRC下的单例)
- iOS开发多线程篇—单例模式(ARC)
- 【iOS开发系列】单例模式宏(兼容ARC和非ARC)
- iOS单例设计 MRC&ARC
- iOS的ARC/MRC单例模式
- 单例模式(ARC)
- iOS开发单例模式Non-ARC(非ARC)和ARC+GCD
- iOS开发多线程篇—单例模式(ARC)整理小料
- IOS ARC和GCD结合的单例模式
- ios支持arc的单例模式的编写
- 【iOS】ARC-MRC下的单例及其应用
- 【iOS】ARC-MRC下的单例及其应用
- IOS GDC实现单例写法ARC与MRC
- [iOS]ARC和MRC下的单例
- Docker点滴
- iOS CoreText基本知识与用法
- maven compile遇到Fatal error compiling: tools.jar not found
- Test
- java借助于JNI调用c/c++动态链接库
- ios 单例(arc版本)
- HDU 5349 MZL's simple problem(优先队列)
- Scala学习之数组的进一步认识
- hdu 5349 MZL's simple problem(水)
- UVA12096 The SetStack Computer
- Wireshark远程抓包
- 刷新界面
- 南邮 OJ 1399 Monkey Vines
- chgrp&chown