一,建立一個類,好比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
@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);//結果地址相同