首页 > 代码库 > 利用GCD的dispatch_once创建单例
利用GCD的dispatch_once创建单例
1 + (id)sharedWhatever2 {3 static dispatch_once_t pred;4 static Whatever *whatever = nil;5 dispatch_once(&pred, ^{6 whatever = [[self alloc] init];7 });8 return whatever;9 }
该方法有很多优势:
1.线程安全
2.很好满足静态分析器要求
3.和自动引用计数(ARC)兼容
4.仅需要少量代码
该方法的劣势就是它仍然运行创建一个非共享的实例:
whatever = [[Whatever alloc] init];
有些时候你希望有这种行为,但如果正在想要的是仅一个实例被实例化就需要注意这点
利用GCD的dispatch_once创建单例
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。