单例的实现(完整版)
Posted dashengios
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例的实现(完整版)相关的知识,希望对你有一定的参考价值。
#import "XMGTool.h"
static XMGTool * _instance;//静态变量保证了单例的唯一性,静态变量是程序一开始就存在的
@interface XMGTool ()<NSCopying, NSMutableCopying>
@end
@implementation XMGTool
+(instancetype)allocWithZone:(struct _NSZone *)zone
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}
+(instancetype)shareTool
{
return [[self alloc]init];
}
- (nonnull id)copyWithZone:(nullable NSZone *)zone {
return _instance;
}
- (nonnull id)mutableCopyWithZone:(nullable NSZone *)zone {
return _instance;
}
@end
外界的调用:
XMGTool *t1 = [[XMGTool alloc]init];
XMGTool *t2 = [[XMGTool alloc]init];
XMGTool *t3 = [XMGTool shareTool];
XMGTool *t4 = [t1 mutableCopy];
NSLog(@" %@-- %@-- %@--- %@",t1,t2,t3,t4);
打印结果
<XMGTool: 0x6000011b2e30>--
<XMGTool: 0x6000011b2e30>--
<XMGTool: 0x6000011b2e30>---
<XMGTool: 0x6000011b2e30>
以上是关于单例的实现(完整版)的主要内容,如果未能解决你的问题,请参考以下文章