单体类模式

1.ARC

@interface HMDataTool : NSObject

+ (instancetype)sharedDataTool;

@end

 

@implementation HMDataTool

// 用来保存唯一的单例对象

static id _instace;

 

+ (id)allocWithZone:(struct _NSZone *)zone

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instace = [super allocWithZone:zone];

    });

    return _instace;

}

 

+ (instancetype)sharedDataTool

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instace = [[self alloc] init];

    });

    return _instace;

}

 

- (id)copyWithZone:(NSZone *)zone

{

    return _instace;

}

@end

 

2.ARC

@interface HMDataTool : NSObject

+ (instancetype)sharedDataTool;

@end

 

@implementation HMDataTool

// 用来保存唯一的单例对象

static id _instace;

 

+ (id)allocWithZone:(struct _NSZone *)zone

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instace = [super allocWithZone:zone];

    });

    return _instace;

}

 

+ (instancetype)sharedDataTool

{

    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        _instace = [[self alloc] init];

    });

    return _instace;

}

 

- (id)copyWithZone:(NSZone *)zone

{

    return _instace;

}

 

- (oneway void)release {

    

}

 

- (id)retain {

    return self;

}

 

- (NSUInteger)retainCount {

    return 1;

}

 

- (id)autorelease {

    return self;

}

@end

posted on 2015-07-07 00:14  pTrack  阅读(109)  评论(0)    收藏  举报