單例設計模式

一,建立一個類,好比application類app

二,在application.h文件中聲明靜態方法
spa

@interface application:NSobject.net

+(application*)getinstance;//返回值爲本身類型的靜態方法orm

@end 內存

三,在application.m文件中定義靜態變量,並實現方法get

#import application.hit

   static application *app=nil;//定義靜態變量io

@interface application()//空分類,使其中的方法私有化;class

-(instancetype)init;import

@end

@implimentation application

+(application*)getinstance{

    if(app==nil){

      app=[[application alloc]init];

   }

   return app;

   }

-(instancetype)init{

    return self;

   }

  //覆蓋allocwithzone,copy

+(id)allocWithZone:(struct _NSZone *)zone{

   @synchronized(self) {

     if(!app){

       app=[super allocwithzone:zone];//確保使用同一塊內存

       return app;

       }

    }

    return nil;

}

//覆蓋copy

-(id)copy{

    return self;

}

@end

四,在main.m文件中實例驗證

#import "application.h"//引進頭文件

    application *app1=[application getinstance];

    application *app2=[application getinstance];

    application *app3=[app2 copy];

    NSlog(@"app1=%p",app1);

    NSlog(@"app2=%p",app2);

    NSlog(@"app3=%p",app3);//結果地址相同

相關文章
相關標籤/搜索