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

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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值