单利
2017-10-12 本文已影响0人
BlueSky520
在.m文件:
#import "NewTool.h"
@implementation NewTool
static NewTool * _tool = nil;
+ (instancetype)shareInstance {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_tool = [[super allocWithZone:NULL] init];
//不是使用alloc方法,而是调用[[super allocWithZone:NULL] init]
//已经重载allocWithZone基本的对象分配方法,所以要借用父类(NSObject)的功能来帮助出处理底层内存分配的杂物
});
return _tool;
}
+ (id)allocWithZone:(struct _NSZone *)zone {
return [NewTool shareInstance];
}
- (id)copy{
return [NewTool shareInstance];
}
- (id)mutableCopy{
return [NewTool shareInstance];
}
在.h文件:
#import@interface NewTool : NSObject
+ (instancetype)shareInstance;
@end
用法:在需要的使用的文件中import “NewToll.h”,使用NewTool * tool = [NewTool shareInstance];创建单利