Android开发工程师iOS之旅--单例模式

内推

【长期有效】欢迎加入字节跳动我的团队:内推链接

+ (AppManager *)shareInstance { //注释1
    static AppManager *instance; //注释2
    static dispatch_once_t t; //注释3 
    dispatch_once(&t, ^{ //注释4
        instance = [[super alloc] init];
    });
    return instance;
}

注释1. Java中喜欢命名为getInstance,但是这里用shareInstance,因为get前缀在OC中有特殊含义

注释2. 与Java的static可不一样,这里的局部变量instance的存储区会从栈区放到静态存储区,从而延长了其生命周期,下次调用shareInstance方法时,还是会使用之前的instance实例

注释3. dispatch_once iOS GCD技术了解一下 http://www.cocoachina.com/ios/20161031/17887.html 当然,也可以用@synchronized方式实现,不过dispatch_once效率更高

注释4. dispatch_once 的机制确保了其线程安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值