接触ios后,一直在想用什么方式保存整个app使用的全局变量那。经过思考查找,知道了应该使用单例模式。
单例模式的特点就是“单”,整个系统种只能存在一个实例。本文将使用GCD,创建多线程安全的单例类,用于存放系统的参数。
第一步:任何一个类使用的时候最常用的申方式就是,alloc init。而alloc 方法 最后一定会进入 +(instancetype)allocWithZone:(struct _NSZone *)zone 方法,所以只要重写这个方法就可以达到单例的效果。gcd提供里一种多线程安全的单词调用方法。具体代码如下:
+(instancetype)allocWithZone:(struct _NSZone *)zone{
static GlobalVariables * instance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance= [super allocWithZone:zone];
});
return instance;
}
做完这一步我们可以去看一下,是不是每次申请,或者在异步线程内每次申请都是一个实例。
第二步:提供一个实例访问方法。当然是一个类方法,方法内只要返回此实例即可,代码如下:
+(instancetype)shareGlobalVariables{
return [[self alloc]init];
}
第三步: 给单例类加入属性存储数据