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);

NSLog(@"%@----------%@",[XMGPerson sharedPerson],[XMGPerson sharedPerson]);

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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容