《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》(第四十五条:使用dispatch_once来执行只需要运行一次的线程安全代码)笔记
代码如下:
+ (id)shareInstance{
static NSString *shareInstance = nil; //定义在static作用域,保证编译器每次执行时复用这个变量,而不是重新创建
static dispatch_once_t onceToken; //保证每次调用都是相同的标记
dispatch_once(&onceToken, ^{
shareInstance = [self alloc] init];
});
return shareInstance;
}
dispatch_once是线程安全的