objc的单例模式(ARC环境下)
来源:互联网 发布:神奇软件 编辑:程序博客网 时间:2024/05/17 09:13
单例模式的作用
- 可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问
从而方便地控制了实例个数,并节约系统资源
单例模式的使用场合
- 在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)
实现单例模式(ARC环境下)
在.m中保留一个全局的static的实例static id _instance;//重写allocWithZone:方法,在这里创建唯一的实例(注意线程安全)+ (instancetype)allocWithZone:(struct _NSZone *)zone{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); return _instance;}//提供1个类方法让外界访问唯一的实例+ (instancetype)sharedInstance{ static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [[self alloc] init]; }); return _instance;}//实现copyWithZone:方法- (id)copyWithZone:(struct _NSZone *)zone{ return _instance;}
结果验证
Singleton *obj1 = [Singleton shareInstace];NSLog(@"%@",obj1);Singleton *obj2 = [Singleton shareInstace];NSLog(@"%@",obj2);Singleton *obj3 = [[Singleton alloc]init];NSLog(@"%@",obj3);Singleton *obj4 = [[Singleton alloc]init];NSLog(@"%@",[obj4 copy]);
打印如下:
2015-08-22 20:31:12.279 Singleton model[50359:811745] <Singleton: 0x7fe55852d510>2015-08-22 20:31:12.280 Singleton model[50359:811745] <Singleton: 0x7fe55852d510>2015-08-22 20:31:12.280 Singleton model[50359:811745] <Singleton: 0x7fe55852d510>2015-08-22 20:31:12.280 Singleton model[50359:811745] <Singleton: 0x7fe55852d510>
0 0
- objc的单例模式(ARC环境下)
- iOS中,ARC的环境下的单例模式。
- ARC模式下的单例写法。
- ARC下的单例模式
- 理解ObjC下的ARC
- iOS中的ARC和MRC环境下的单例设计模式的分析
- ARC下使用单例模式
- 单例模式的实现(ARC与非ARC)
- iOS的ARC/MRC单例模式
- objc 的ARC
- IOS单例模式(MRC下和ARC下)
- ARC下的单例及其应用
- ARC和MRC下的单例
- iOS开发-Objective-C单例在ARC环境下的实现和理解
- Objective-C在ARC下结合GCD的单例模式和宏模版
- Objective-C在ARC下结合GCD的单例模式和宏模版
- Objective-C在ARC下结合GCD的单例模式和宏模版
- 在ARC下结合GCD的单例模式和宏模版
- java中string与json互相转化
- [UVA 10054]The Necklace[欧拉回路][打印路径]
- 自适应网页设计
- 基于MFC编程中,当创建了一个对话框后,但是当按下ESC或者是回车健的时候,这个对话框就会消失
- c++与Tcl通过管道通信,并传递参数,获取测试仪实时测试进度
- objc的单例模式(ARC环境下)
- poj3258 哈夫曼树 优先队列
- 排序算法(Java语言)——快速排序
- XMPP的android下的登陆,注册等:
- LeetCode[85]::Maximal Rectangle C++
- 学习tcl的几个好网络连接
- javaScript简介
- Java Map接口Properties
- 数据库调优的方法有那些