您的位置:首页 > 其它

oc单例设计模式

2015-06-11 23:17 239 查看
/**DataTool.h工具类*/
#import <Foundation/Foundation.h>
@interface DataTool : NSObject
+ (instancetype)sharedDataTool;
@end

/**DataTool.m文件*/
#import "DataTool.h"
@implementation DataTool
// 用来保存唯一的单例对象
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

/**控制器*/
- (void)viewDidLoad
{
[super viewDidLoad];
DataTool *tool1 = [DataTool sharedDataTool];
DataTool *tool2 = [DataTool sharedDataTool];
DataTool *tool3 = [[DataTool alloc] init];
DataTool *tool4 = [[DataTool alloc] init];
NSLog(@"%@ %@ %@ %@", tool1, tool2, tool3, tool4);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OC单例设计模式