单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。
通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
1、用GCD创建,
dispatch_once
不仅意味着代码仅会被运行一次,而且还是线程安全的
+(StudentObject *)defaultStudent
{
static StudentObject *student;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
student = [[StudentObject alloc]init];
});
return student;
}
2、
加锁,保持单例的唯一性(防止同时申请多个对象)
+(WLText *)getInstance{
static WLText *str;
@synchronized(self){//关键字,同步,表示同一时间只能有一个线程在访问
if (str==nil) {
str=[[WLText alloc]init];
}
return str;
}
}