单例的最佳模式是什么?我经常使用
+ (SomeManager *)shared
{
static SomeManager * _SomeManager = nil;
if (_SomeManager) {
return _SomeManager;
}
_SomeManager = [[SomeManager alloc] init];
return _SomeManager;
}
这个线程安全吗?如果没有,热以使其安全?
单例的最佳模式是什么?我经常使用
+ (SomeManager *)shared
{
static SomeManager * _SomeManager = nil;
if (_SomeManager) {
return _SomeManager;
}
_SomeManager = [[SomeManager alloc] init];
return _SomeManager;
}
这个线程安全吗?如果没有,热以使其安全?
使用Objective C中使用GCD的dispatch_once创建单例的示例
+ (id)sharedInstance
{
static dispatch_once_t once;
static id sharedInstance;
dispatch_once(&once, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
清晰而简单。下次谷歌更好。
我更喜欢使用 GCD dispatch_once 方法...
+ (id) sharedSomethingManager
{
static dispatch_once_t onceQueue;
static SomethingkManager *somethingManager = nil;
dispatch_once(&onceQueue, ^{somethingManager = [[self alloc] init]; });
return somethingManager;
}