oc线程安全的单例
- 分享类型:应用开发相关
+ (ObjectName *)instance {
static ObjectName * _instance = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
_instance = [[self alloc] init];
});
return _instance;
}
该方法有很多优势:
1 线程安全
2 很好满足静态分析器要求
3 和自动引用计数(ARC)兼容
4 仅需要少量代码
该方法的劣势就是它仍然运行创建一个非共享的实例:
ObjectName *object = [[ObjectName alloc] init];
有些时候你希望有这种行为,但如果正在想要的是仅一个实例被实例化就需要注意这点。