使用GCD dispatc_once和ARC创建单例

时间:2014-04-02 09:24:02

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

我想创建单身,我不知道该使用什么:dispatch_once或@syncronized。

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

1 个答案:

答案 0 :(得分:0)

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

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

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