1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| #import "NSDataTool.h"
@implementation NSDataTool
static id _instance;
+(instancetype)allocWithZone:(struct _NSZone *)zone { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance=[super allocWithZone:zone]; }); return _instance; }
+(instancetype)shareDataTool { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance=[[self alloc]init]; }); return _instance; } -(id)copyWithZone:(NSZone *)zone { return _instance; } //空方法 -(oneway void)release { } -(instancetype)retain { return self; } - (NSUInteger)retainCount { return 1; } @end
|