简单说来,单例就是使得类中的一个对象成为系统中的唯一实例。
iOS 4.0 及以后, 我们一般用这种方法来创建单例。
+ (instancetype)sharedInstance{
//必须静态或全局
static YFSessionManager *sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[YFSessionManager alloc] init];
sharedInstance.recodeSessions = [NSMutableArray new];
});
return sharedInstance;
}
查看函数dispatch_once的原型
void dispatch_once(
dispatch_once_t *predicate,
dispatch_block_t block);
第一个参数predicate: 检查后面第二个参数所代表的代码块是否被调用的谓词,
第二个参数则是在整个应用程序中只会被调用一次的代码块。
dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。
网友评论