典型的单例写法
//可能被多线程同时创建
static id sharedMyManager;
+(id)sharedThemeManager{
if(sharedMyManager==nil){
sharedMyManager = [[self alloc] init];
}
return sharedMyManager;
}
//加锁的写法,可以避免上述问题
+(id)sharedThemeManager{
@sychronized(self){
if(sharedMyManager==nil){
sharedMyManager = [[self alloc] init];
}
}
return sharedMyManager;
}
//第一次实例化创建Lock free
+(void) initialize{
static BOOL initialized = NO;
if(initialized == NO){
initialized = YES;
sharedMyManager = [[self alloc] init];
}
}
//GCD写法
+(id)sharedManager{
static dispatch_once_t once;
//保证blocks只能执行一次
dispatch_once(&once,^{
sharedMyManager = [[selft alloc] init];
});
return sharedMyManger;
}
//可能被多线程同时创建
static id sharedMyManager;
+(id)sharedThemeManager{
if(sharedMyManager==nil){
sharedMyManager = [[self alloc] init];
}
return sharedMyManager;
}
//加锁的写法,可以避免上述问题
+(id)sharedThemeManager{
@sychronized(self){
if(sharedMyManager==nil){
sharedMyManager = [[self alloc] init];
}
}
return sharedMyManager;
}
//第一次实例化创建Lock free
+(void) initialize{
static BOOL initialized = NO;
if(initialized == NO){
initialized = YES;
sharedMyManager = [[self alloc] init];
}
}
//GCD写法
+(id)sharedManager{
static dispatch_once_t once;
//保证blocks只能执行一次
dispatch_once(&once,^{
sharedMyManager = [[selft alloc] init];
});
return sharedMyManger;
}