单例设计模式
基本概念
单例设计模式运用较为普遍、广泛且较为简单的设计模式之一,它的设计原理是始终返回一个实例,即一个类始终只有一个实例。
创建单例的基本步骤
单例基本实现
static UserContext *segtonInstance = nil;
@implementation UserContext
+(id)shareUserContext{
@synchronized(self){
//线程安全
if (segtonInstance == nil) {
segtonInstance = [[[self class] alloc] init];
}
}
return segtonInstance;
}
//重写 allocWithZone: 方法
+(id)allocWithZone:(NSZone *)zone{
if (segtonInstance == nil) {
segtonInstance = [super allocWithZone:zone];
}
return segtonInstance;
}
- (id)copyWithZone:(NSZone *)zone
{
return segtonInstance;
}
//覆盖 release,autorelease,retain,retainCount 方法方法
//返回本身
-(id)retain
{
return self;
}
-(NSInteger)retainCount
{
return UINT_MAX;
}
-(id)autorelease{
return self;
}
-(oneway void)release
{
}
//验证单例
UserContext *user1 = [UserContext shareUserContext];
UserContext *user2 = [UserContext shareUserContext];
UserContext *user3 = [[UserContext alloc] init];
UserContext *user4 = [[UserContext alloc] init];
UserContext *user5 = [[UserContext copy];
NSLog(@"%@",user1);
NSLog(@"%@",user2);
NSLog(@"%@",user3);
NSLog(@"%@",user4);
NSLog(@"%@",user5);