IOS单例的设计模式

static SurveyRunTimeData *sharedObj = nil; //第一步:静态实例,并初始化置为nil。

@implementation SurveyRunTimeData

+ (SurveyRunTimeData*) sharedInstance    //第二步:实例构造检查静态实例是否为nil。

{    

@synchronized (self)     {

        if (sharedObj == nil)

        {            

      [[self alloc] init];

        }    

}

    return sharedObj;

}

+ (id) allocWithZone:(NSZone *)zone         //第三步:重写allocWithZone方法 {

    @synchronized (self) {        

  if (sharedObj == nil) {

            sharedObj = [super allocWithZone:zone];

            return sharedObj;

        }

    }

    return nil;

}

- (id) copyWithZone:(NSZone *)zone 

        //第四步

{    

return self;

}

- (id) retain {

    return self;

}

- (unsigned) retainCount {

    return UINT_MAX;

}

- (oneway void) release {   

  }

- (id) autorelease {

    return self;

}

- (id)init {

    @synchronized(self) {

        [super init];            

//往往放一些要初始化的变量.        

return self;    

}

}

@end

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。