自己编写的Objective-c的singleton单例实例

 

例模式Singleton模式的简单特点

 

  例模式(Singleton):保一个类仅有一个例,并提供一个访问它的全局访问点。有一下特点

 1.有一个私有的无参构造函数,可以防止其他类实例化它,而且也不应该承,如果许继承那么每个子都可以例,背了Singleton模式唯一的初衷。

 2.被定义为sealed(密封的),就像前面提到的该类应该承,所以了保可以把该类成不允派生,但没有要求一定要这样

 3.一个静量用来保存单实例的引用。

 4.一个公有的静方法用来单实例的引用,如果null建一个。

 

/*********************************************************************

 文件名称 :SingletonDemoTest.m

     :好岸园技

         : http://www.hopean.com

 时间 : 12-11-7

 文件描述 : 

  

     : 好岸园技

         http://www.hopean.com

 *********************************************************************/

 

#import"SingletonDemoTest.h"

 

@implementation SingletonDemoTest

 

staticSingletonDemoTest *sharedInstance;

/******************************************************************************

 函数名称  : sharedInstance

 函数描述  : 一个类仅有一个例,并提供一个访问它的全局访问点。

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

+(id)sharedInstance{

    /*

     synchronized(self)同步代码块时,一个时间内只能有一个线程得到行。另一个线程必等待当前线行完个代码块以后才能码块

     */ 

   @synchronized(self){

        if (sharedInstance== nil) {

           sharedInstance = [[SingletonDemoTestallocWithZone:NULL]init];

        }

    }

   return sharedInstance;

}

 

/******************************************************************************

 函数名称  : allocWithZone

 函数描述  : 重写allocWithZone方法,用来保其他人直接使用allocinit试图获得一个新例的

           生一个新

 入参数  :N/A

 出参数  :N/A

 

     : 好岸园技

         http://www.hopean.com

 

 ******************************************************************************/

+(id)allocWithZone:(NSZone *)zone{

    /*

     重写allocWithZone方法,用来保其他人直接使用allocinit试图获得一个新例的候不生一个新

     */

   @synchronized(self){

        if (sharedInstance== nil) {

            sharedInstance= [super allocWithZone:zone];

            returnsharedInstance;

        }

        else{

            NSLog(@"例化");

        }

    }

   return nil;

}

 

 

/******************************************************************************

 函数名称  : init

 函数描述  : 重写init方法,初始化数据

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

-(id)init{

    self = [super init];

    if(self !=nil){

        NSLog(@"初始化数据");

    }

   return self;

}

 

 

/******************************************************************************

 函数名称  : copyWithZone

 函数描述  :重写copyWithZone方法,返回当前

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

- (id) copyWithZone:(NSZone*)zone

{

   return self;

}

 

 

/******************************************************************************

 函数名称  : retain

 函数描述  : 重写retain方法,返回当前

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

- (id) retain

{

   return self;

}

 

 

/******************************************************************************

 函数名称  : retainCount

 函数描述  :重写retainCount方法,返回引用

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

- (NSUInteger) retainCount

{

   return NSUIntegerMax; 

}

 

 

/******************************************************************************

 函数名称  : release

 函数描述  :重写release方法,此是releasedo nothing

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

-(id)release

{

    //

}

 

 

/******************************************************************************

 函数名称  : autorelease

 函数描述  :重写autorelease方法,初始化

 入参数  :N/A

 出参数  :N/A

 返回    :N/A

 

     : 好岸园技

         http://www.hopean.com

 ******************************************************************************/

- (id) autorelease

{

   return self;

}

 

@end

 


原文地址:https://www.cnblogs.com/hopeanCom/p/2789568.html