作者:KeNnyT0nGMM_934 | 来源:互联网 | 2023-06-16 14:32
一、单例方法1
简单方法
static CZMusicTool* INSTANCE;
/**
* 单例方法
*
* @return 返回唯一实例
*/
+(instancetype)
一、单例方法1
简单方法
static CZMusicTool* INSTANCE;
/**
* 单例方法
*
* @return 返回唯一实例
*/
+(instancetype)sharedInstance
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
INSTANCE=[CZMusicTool new];
});
return INSTANCE;
}
二、单例方法2
防止频繁加锁
static id _instance;
#pragma mark - LifeCycle Methods
-(id)init {
if (self = [super init]) {
currentEngine = [[AlterHotelEngine alloc] initWithDefaultSetting];
}
return self;
}
// ARC 下创建单例 Start
+ (AlterHotelDateCenter *)sharedInstance {
if (_instance == nil) { // 防止频繁加锁
@synchronized(self) {
if (_instance == nil) { // 防止创建多次
_instance = [[self alloc] init];
}
}
}
return _instance;
}
+ (id)allocWithZone:(struct _NSZone *)zone {
if (_instance == nil) { // 防止频繁加锁
@synchronized(self) {
if (_instance == nil) { // 防止创建多次
_instance = [super allocWithZone:zone];
}
}
}
return _instance;
}
- (id)copyWithZone:(struct _NSZone *)zone {
return _instance;
}
// ARC 下创建单例 End