最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
苹果iOS检测类是否是单例类
时间:2016-06-06 编辑:简简单单 来源:一聚教程网
一般我们都是自己封装个类方法来获取单例类的类对象,但是某些类也是用很相似的方法声明来获取类对象的:
比如著名网络请求第三方库AFNetworking里的AFHTTPSessionManager类,获取类对象的方法是:
代码如下 | 复制代码 |
/** Creates and returns an `AFHTTPSessionManager` object. */ + (instancetype)manager; |
但是这个通过这个方法获取到的对象却不是单利对象,检测方法如下:
代码如下 | 复制代码 |
-(void)testAFHTTPSessionManagerIsSingletonClass { NSLog(@"%@",[AFHTTPSessionManager manager]); NSLog(@"%@",[AFHTTPSessionManager manager]); } 控制台打印的信息: 2016-06-05 18:17:31.074 TestApp[2923:50226] 2016-06-05 18:17:31.075 TestApp[2923:50226] |
对比两个对象的内存地址可知[AFHTTPSessionManager manager]获取到的对象不是单例对象!
下面是我自己封装的单例类:
代码如下 | 复制代码 |
-(void)testSingleClassIsSingletonClass |
//好吧,我确实把这两个对象的内存地址复制上去了,可为什么就是不显示,我却不知道了。我只想说这两个对象的内存地址是一样的!
附上sharedSingleClass的方法实现:
代码如下 | 复制代码 |
+ (id)sharedSingleClass{ //1:声明一个静态的全局的单例对象指针,初始值为nil static SingleClass *single = nil; //2:调用GCD的once方法//能够保证block中代码块在整个程序运行过程中只会被执行一次 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{//block代码段,代码块 //3:实例化single对象指针 single = [[SingleClass alloc] init]; }); //NSLog(@"single = %p", single); return single;//4:返回已经初始化的single指针 } |
-
下一个: 网易云音乐歌曲识别功能使用方法
相关文章
- sora软件价格介绍 02-22
- sora官网入口地址一览 02-22
- Sora生成的视频使用教程 02-22
- 《梦幻西游》元宵灯谜线索答案大全2024 02-22
- 《原神》有朋自远方来第一天通关攻略 02-22
- 《苏醒之路》四个结局达成攻略 02-22