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

【iOS】三种单例模式写法

2017-04-01 23:54 429 查看
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

一、(线程不安全)

#import "Singleton.h"

@implementation Singleton

static Singleton *_singleTon = nil;
+ (id)sharedSingleton {
if (!_singleTon) {
_singleTon = [[Singleton alloc] init];
}
return _singleTon;
}
end


二、使用dispatch_once只创建一次

#import "Singleton.h"

@implementation Singleton

+ (id)sharedSingleton {
//1.声明一个空的静态的单例对象
static Singleton *_singleTon = nil;
//2.声明一个静态的gcd的单次任务
static dispatch_once_t onceTask;
//3.执行gcd单次任务:对对象进行初始化
dispatch_once(&onceTask, ^{
_singleTon = [[Singleton alloc] init];
});
return _singleTon;
}
end


三、重写了系统提供的initialize(线程安全的方式)

#import "Singleton.h"

@implementation Singleton

static Singleton *_singleTon = nil;
+ (void)initialize {
if (self == [Singleton class]) {
_singleTon = [[Singleton alloc] init];
}
}

+ (id)sharedDataCenterByInitialize {
return _singleTon;
}
end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios 单例模式