单例模式常用在工具类中,现在探讨几种实现方式:
下面的实现方式都是线程安全的:
+ (instancetype)shared
{
static SharedObject *_sharedObject = nil;
static dispatch_once_t once;
dispatch_once(&once, ^{
_sharedObject = [[SharedObject alloc] init];
});
return _sharedObject;
}
+ (instancetype)shared
{
static SharedObject *_sharedObject = nil;
@synchronized(self)
{
if(_sharedObject == nil){
_sharedObject = [[SharedObject alloc] init];
}
}
return _sharedObject;
}
下面的是非线程安全的。很多人都会这样子写。