【问题标题】:creating singleton using GCD dispatc_once and ARC使用 GCD dispatc_once 和 ARC 创建单例
【发布时间】:2014-04-02 09:24:01
【问题描述】:

我想创建单例,但不确定使用什么:dispatch_once 或@syncronized。

我的问题是:如果我在一个视图控制器上创建单例对象(使用 GCD),然后我转到另一个视图控制器,ARC 会破坏我的单例对象吗?如果我将在另一个视图控制器中再次需要它,我可以再次创建它吗?

【问题讨论】:

    标签: ios singleton automatic-ref-counting grand-central-dispatch


    【解决方案1】:

    如果你创建正确,没有人会破坏它,除了杀死应用程序,因此单例应该只用于非常特定的任务。
    这就是我使用 ARC 创建单例的方式,它是一个类方法

    + (instancetype)sharedInstance
    {
        static dispatch_once_t pred = 0;
        __strong static id _sharedObject = nil;
        dispatch_once(&pred, ^{
            _sharedObject = [[self alloc] init];
        });
        return _sharedObject;
    }
    

    在您的类上调用 +sharedInstance 将确保始终返回相同的对象

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-08
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多