IOS单例模式(singleton)
出了正月十五,年算是过完了。最近也没什么项目,十分的不知所措,很多东西也没有接触过,心里没有底。
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。(摘自百度百科)
单例我理解就是为了节约资源,比如:公交公司可以把公交时刻表打印出来,给市民一人一份,这多方便啊!但是耗费资源啊,而且不好更新维护。于是公交公司把公交时刻表,贴在了公交站台,方便大家获取信息。
单例的写法:
+ (MyClass *)sharedInstance
{
// 1.声明一个静态变量去保存类的实例,确保它在类中的全局可用性。
static MyClass *MyClassInstance = nil;
// 2.声明一个静态变量dispatch_once_t ,它确保初始化器代码只执行一次。
static dispatch_once_t predicate;
// 3.使用Grand Central Dispatch(GCD)执行初始化MyClass变量的block.这正是单例模式的关键:一旦类已经被初始化,初始化器永远不会再被调用。
dispatch_once(&predicate, ^{
MyClassInstance = [[self alloc] init];
});
return MyClassInstance;
}
//下一次你调用sharedInstance的时候,dispatch_once块中的代码将不会执行(因为它已经被执行了一次),你将得到原先已经初始化好的实例。
浙公网安备 33010602011771号