您的位置:首页 > 移动开发

单例初探(使用单例存储app全局公用数据)

2015-07-03 11:50 253 查看
接触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];
}
第三步: 给单例类加入属性存储数据





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: