Singleton(单例模式),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。
代码如下:
static ClassA *classA = nil;//静态的该类的实例
+ (ClassA *)sharedManager
{
@synchronized(self) {
if (!classA) {
classA = [[super allocWithZone:NULL]init];
}
return classA;
}
}
+ (id)allocWithZone:(NSZone *)zone {
return [[self sharedManager] retain];
}
- (id)copyWithZone:(NSZone *)zone {
return self;
}
- (id)retain {
return self;
}
- (NSUIntger)retainCount {
return NSUIntgerMax;
}
- (oneway void)release {
}
- (id)autorelease {
return self;
}
-(void)dealloc{
}
王珂
//将first做成单例
static FirstViewController *ft=nil;
+ (FirstViewController *)singleton
{
@synchronized(self){//线程安全
if (!ft){
ft=[[super allocWithZone:NULL]init];
}
}
return ft;
}
+ (id)allocWithZone:(NSZone *)zone//重新写alloc是从写的父类的alloc
{
return [[self singleton]retain]; //返回单例 这里self在+方法中就是类型不是对象
}
- (id)copyWithZone:(NSZone *)zone//重新copy
{
return self;
}
- (id)retain
{
return self;
}
- (id)autorelease
{
return self;
}
- (oneway void)release
{
//不做处理
}
- (void)dealloc
{
//不作处理
}
- (NSUInteger)retainCount
{
return NSUIntegerMax;
}
ios完整单例
猜你喜欢
转载自zhangmingwei.iteye.com/blog/1743831
今日推荐
周排行