常用设计模式之单例
作者:网络转载 发布时间:[ 2015/9/28 14:19:06 ] 推荐标签:软件测试技术 测试用例
1、单例模式的作用是解决”应用中只有一个实例“的一类问题。
2、在一个iOS应用的生命周期中,有时候我们只需要某个类的一个实例,如果有多个实例会占用过多的内存。例如当程序启动时,应用的状态由UIApplication类的一个实例维护,这个实例代表了整个”应用程序对象“,它只能是一个实例,其作用是实现程序中一些共享资源的访问和状态的保护等。
3、单例模式一般会封装一个静态属性,并提供静态实例的创建方法。代码如下:
1 //
2 //Singleton.h
3 //
4
5 @interface Singleton : NSObject
6
7 + (Singleton*)sharedManager;
8 //属性
9 @property (nonatomic ,strong) NSString* singletonData;
10
11 @end
12
13 -------------------------------------------------------------------------
14
15 //
16 //Singleton.m
17 //
18
19 #import "Singleton.h"
20
21 @implementation Singleton
22 static Singleton *sharedManager = nil;
23 //创建静态实例的方法
24 + (Singleton*)sharedManager
25 {
26 static dispatch_once_t once;
27 dispatch_once(&once, ^{
28 sharedManager = [[self alloc] init];
29 });
30 return sharedManager;
31 }
32 //dispatch_once(dispatch_once_t *predicate, dispatch_block_t block);
33 ??@end
sharedManager方法我们采用了dispatch_once函数(GCD技术,Grand Central Dispatch,是一种基于C语言的多线程访问技术),它接收一个dispatch_once_t的参数,这个参数GCD提供的结构体,使用时将GCD地址传给dispatch_once函数,这个函数能够记录该代码块是否被调用过。还有一个块参数。对于给定的一个predicate来说,该函数会保证相关的块必定会执行,而且只执行一次,重要的是这个方法是完全线程安全的,不需要线程锁@synchronized之类的语句。需要注意的是,对于只需要执行一次的块来说,传入的predicate必须是完全相同的,所以predicate常常会用static或者global来修饰。这样写代码简单清晰,而且做到了线程安全,这样实现的效率也很高。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11