iOS常用设计模式-单例模式
作者:网络转载 发布时间:[ 2015/8/26 14:05:26 ] 推荐标签:移动测试 iOS 代码
一个完美的单例模式的实现方式
不推荐直接使用:XXXClass *obj = [XXXClass [alloc] init];方式获取单例对象
建议直接使用shareInstance获取单例对象,这样跟官方统一
代码实现方式
/**
* 全局的static的实例,直到程序退出才被销毁
*/
static id _instance;
/**
* 控制只分配一份内存空间,alloc方法会调用这个方法来分配内存
*/
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
_instance = [super allocWithZone:zone];
});
return _instance;
}
/**
* 控制只初始化一次,保证[[xxx alloc] init]也是的对象
*/
-(instancetype)init
{
__block typeof(self) onceSelf = self;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
onceSelf = [super init];
if(onceSelf)
{
// 自定义初始化代码
}
});
return onceSelf;
}
/**
* 提供一个类方法供外界快速获取单例对象
*/
+(instancetype)sharedInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^
{
_instance = [[self alloc] init];
});
return _instance;
}
/**
* 控制拷贝对象也是同一个示例,可以不遵守<NSCopying>协议
*/
-(id)copyWithZone:(NSZone *)zone
{
return _instance;
}
相关推荐
更新发布
功能测试和接口测试的区别
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