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

来源:互联网 发布:js闭包循环面试题 编辑:程序博客网 时间:2024/06/05 20:21

    接触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];}
 第三步: 给单例类加入属性存储数据








0 0
原创粉丝点击