搜索
您的当前位置:首页正文

GCD单例模式 13

来源:二三娱乐

  单例模式的作用

可以保证程序运行过程,一个类只用一个实例,而且该实例易于供外界访问

从而方便控制了实例个数,并节约系统资源

单例模式使用场合

在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)

代码实现

创建一个类继承与NSObject

类名为XMGPerson

-(void)viewDidLoad{

[super viewDidLoad];

XMGPerson *person1 = [[XMGPerson alloc]init];

person1.name = @"jack";

XMGPerson *person2 = [[XMGPerson alloc]init];

XMGPerson *person3 = [[XMGPerson alloc]init];

XMGPerson *person4 = [[XMGPerson alloc]init];

NSLog(@"%p %p %p %p",person1,person2,person3,person4);

XMGPerson *p = [XMGPerson sharedPerson];

XMGPerson *p2  = [p copy];

NSLog(@"%p %p",p,p2);

}

在XMGPerson.m文件中

#import"XMGPerson"

@interface XMGPerson()<NSCopying>

@end

@implementation XMGPerson

static XMGPerson *person;

//外面调用alloc的时候保证是同一个对象

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

static dispatch_once_t onceToken;

dispatch_once(&onceToken,^{

person = [super allocWithZone:zone];

});

return person

}

+(instancetype)sharedPerson{

static dispach_once_t onceToken;

dispatch_once(&onceToken,^{

person = [[self alloc]init];

});

return person;

}

-(id)copyWithZone:(NSZone *)zone{

return person;

}


在XMGPerson.h文件中

@property (nonatomic,strong) NSString *name;

+(instancetype )sharedPerson;

Top