您的位置:首页 > 移动开发 > IOS开发

【iOS Tips】002-实现“简单单例模式”的几种方法?

2018-07-16 16:41 399 查看
首先不管哪种写法都要首先声明一个静态单例对象,如下所示:

static GNRSingleModel *instance = nil;

其次就是创建单例的时机了,常用的有以下几种写法:

一、简单写法(线程不安全)

+ (instancetype)sharedInstance{
if (instance==nil) {
instance = [[GNRSingleModel alloc]init];
}
return instance;
}

二、使用dispatch_once(线程安全)

+ (instancetype)sharedInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
instance = [[GNRSingleModel alloc]init];
});
return instance;
}

三、在initialize中创建(线程安全)

+ (void)initialize{
if (self == [super class]) {
instance = [[GNRSingleModel alloc]init];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS