-2

单例的最佳模式是什么?我经常使用

+ (SomeManager *)shared
{
    static SomeManager * _SomeManager = nil;
    if (_SomeManager) {
        return _SomeManager;
    }

    _SomeManager = [[SomeManager alloc] init];

    return _SomeManager;
}

这个线程安全吗?如果没有,热以使其安全?

4

2 回答 2

1

使用Objective C中使用GCD的dispatch_once创建单例的示例

+ (id)sharedInstance
{
    static dispatch_once_t once;
    static id sharedInstance;
    dispatch_once(&once, ^{
        sharedInstance = [[self alloc] init];
    });
    return sharedInstance;
}

清晰而简单。下次谷歌更好。

于 2013-07-27T13:31:38.377 回答
0

我更喜欢使用 GCD dispatch_once 方法...

+ (id) sharedSomethingManager
{
    static dispatch_once_t onceQueue;
    static SomethingkManager *somethingManager = nil;

    dispatch_once(&onceQueue, ^{somethingManager = [[self alloc] init]; });
    return somethingManager;
}
于 2013-07-27T13:30:35.567 回答