如果觉得我写的还不错,请关注我的新浪微博@小橘爷,最新文章即时推送~
单例模式
单例模式的作用是解决“应用中只有一个实例”的一类问题。
Objective-C 实现原理
单例模式一般会封装一个静态属性,并提供静态实例的创建方法。
实现的参考代码如下:
@interface Singleton : NSObject
// 获取单例的方法
+ (Singleton *)sharedManager;
@end
#import "Singleton.h"
@implementation
// 创建静态变量
static Singleton *sharedManager = nil;
+ (Singleton *)sharedManager
{
// GCD 提供的结构体,使用时将它的地址传给 dispatch_once 函数
static dispatch_once_t onceToken;
// dispatch_once 函数,作用是在整个程序的生命周期中只执行一次代码块,并且它能够记录该代码块是否被调用过
dispatch_once(&onceToken, ^{
sharedManager = [[self alloc] init];
}];
return sharedManager;
}
@end
具体的实现大体就是这些了。其中,dispatch_once 函数不仅意味着代码仅会被运行一次,而且还意味着此运行还是线程同步的。当我们使用了 dispatch_once 函数时,就不再需要使用互斥锁(@synchronized)了~