OC中实现单例模式
最简单的写法,存在线程安全问题:
@implementation Singleton
+ (instancetype)shareInstance {
static Singleton *instance = nil;
if (! instance) {
instance = [[Singleton alloc] init];
}
return instance;
}
@end
存在的线程安全问题是,可能出现两条线程同时判断了instance==nil,然后实例了两个Singleton出来。
测试代码:
dispatch_queue_t queue = dispatch_queue_create