创建单例
来源:互联网 发布:定制棕垫 知乎 编辑:程序博客网 时间:2024/06/06 23:57
static TRDataManager *_dataManagerByUnsafe = nil;+ (instancetype)sharedDataManagerByUnsafe { if (!_dataManagerByUnsafe) { _dataManagerByUnsafe = [[TRDataManager alloc] init]; } return _dataManagerByUnsafe;}////////////////////////////////////static TRDataManager *_dataManagerBySafe = nil;+ (instancetype)sharedDataManagerBySafe { //1.创建一个静态的一次性任务对象 static dispatch_once_t onceToken; //2.调用一次性任务方法 dispatch_once(&onceToken, ^{ //创建单例对象 _dataManagerBySafe = [[TRDataManager alloc] init]; }); //3.返回单例对象 return _dataManagerBySafe;}//重写alloc方法; 或者重写allocWithZone+ (instancetype)allocWithZone:(struct _NSZone *)zone { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _dataManagerBySafe = [super allocWithZone:zone]; }); return _dataManagerBySafe;}//当copy当前类型对象时候,返回唯一的单例对象- (id)copyWithZone:(NSZone *)zone { return _dataManagerBySafe;}////////////////////////////////创建单例的方式三static TRDataManager *_dataManagerByInit = nil;+ (void)initialize { if (self == [TRDataManager class]) { //初始化操作;一定能保证只调用一次+线程安全的 _dataManagerByInit = [[TRDataManager alloc] init]; }}+ (instancetype)sharedDataManagerByInit { return _dataManagerByInit;}
0 0
- dispatch_once创建单例
- 创建型-单例
- dispatch_once创建单例
- dispatch_once创建单例
- dispatch_once创建单例
- dispatch_once 创建单例
- C#创建单例
- iOS 创建单例
- iOS 单例创建
- 创建单例
- 创建单例
- 创建单例
- swift创建单例
- iOS 创建单例
- 单例的创建
- 单例的创建
- 创建单例
- iOS单例创建
- leetcode 32 Longest Valid Parentheses
- Android——Drawable
- Oracle数据库(七)处理数据
- WM_QUIT消息
- c#——list中元素转化(ConvertAll select foreach)
- 创建单例
- C++中野指针和空指针和无类型指针
- 汇编写的基于DOS窗口的记事本
- Linux命令查看以及编程获取CPU核数
- .html 、.htm 、 .shtml 以及 .shtm 四种扩展名的文件区别
- PCB设计中内层孤岛是什么意思?
- PeekMessage
- android 下载速度Kb/s和Kbps的转换
- MySQL order by的一个优化思路