1,定义一个静态的全局的变量
static Settings *sharedSettings = nil;
2,创建一个类方法,用来返回该类实例
+ (Settings *)sharedInstance {
@synchronized(self){
if(sharedSettings == nil){
sharedSettings = [[self alloc] init];
//做一些初始化操作
}
}
return sharedSettings;
}
3,重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
+ (id)allocWithZone:(NSZone *)zone {
@synchronized(self) {
if (sharedSettings == nil) {
sharedSettings = [super allocWithZone:zone];
}
}
return sharedSettings;
}
4、适当实现allocWitheZone,copyWithZone,release和autorelease
+ (id)copyWithZone:(NSZone *)zone {
return self;
}
- (id)retain {
return self;
}
- (unsigned)retainCount {
return UINT_MAX;
}
- (oneway void)release {
}
- (id)autorelease {
return self;
}
IOS单例模式
最新推荐文章于 2023-09-15 19:56:24 发布