zoukankan      html  css  js  c++  java
  • 自己编写的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

     


  • 相关阅读:
    数据结构实现时的注意事项
    用编程解决生活中的问题
    用编程解决生活中的问题
    中英文对照 —— 生物学基本概念
    中英文对照 —— 生物学基本概念
    面向对象 —— 对类(class)的理解
    面向对象 —— 对类(class)的理解
    百家姓 —— 特别的姓氏与姓氏的由来
    百家姓 —— 特别的姓氏与姓氏的由来
    英文段子
  • 原文地址:https://www.cnblogs.com/hopeanCom/p/2789568.html
Copyright © 2011-2022 走看看