iOS 单利的原理和使用方法


应用场景

/*

 1. 有一个全局的实例化的类方法

 2. 保存在静态区,单例的生命周期和应用程序一样长

 3. 内存中有且只有一个副本/对象/实例,指保存一份

 */


原理:

// onceToken 是有一个初始值

    // 第一次执行的时候,会判断是否是初始值,如果是初始值是0,就执行block内部的代码

    // 第一次执行完成之前,会重置初始值为非0


==========================静态变量实现单利

static InstanceClass *instance;+ (InstanceClass *)defaultInstance{
    @synchronized (self){
        if (instance == nil) {
            instance = [[InstanceClass alloc] init];
        }
    }
    
    return instance;}



=============GCD实现单利;


//创建一个单利对象

+ (instancetype)sharedAccountManager

{

    // 定义静态的空对象

    static AccountManager *manager;

    

    static dispatch_once_t onceToken;


    dispatch_once(&onceToken, ^{

        manager = [[AccountManager alloc] init];

    });

    

    return manager;

}


系统中提供的单利:================================================


   应用程序单利:

   UIApplication *app = [UIApplicationsharedApplication];

============================================================
文件管理对象单利:

    NSFileManager *fileManager=[NSFileManagerdefaultManager];



====================================================

   偏好设置: NSUserDefaults *def=[NSUserDefaultsstandardUserDefaults];

  通知:  NSNotificationCenter *noti=[NSNotificationCenterdefaultCenter];



NSURLCache(请求缓存):   
NSHTTPCookieStorage(应用程序cookies池):     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值