iOS之《Effective Objective-C 2.0》读书笔记(45)
来源:互联网 发布:视频亮度调节软件 编辑:程序博客网 时间:2024/06/04 20:08
第45条:使用dispatch_once来执行只需运行一次的线程安全代码
1.如果在一个项目中,某段代码只需要运行一次,则:
static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{ // 只需要运行一次});
2.单例的书写也使用到了dispatch_once
- 使用GCD的优点:可以简化代码并且彻底保证线程安全,开发者根本无须担心加锁或同步
+ (instancetype)sharedInstance{ static EOCClass *sharedInstance = nil; @synchronized (self) { if (!sharedInstance) { sharedInstance = [[self alloc] init]; } } return sharedInstance;}
- 不使用GCD:
+ (instancetype)sharedInstance{ static EOCClass *sharedInstance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedInstance = [[self alloc] init]; }); return sharedInstance;}
3.还需要明确的是:
Swift中的GCD没有这个功能,OC中的有此功能
阅读全文
0 0
- iOS之《Effective Objective-C 2.0》读书笔记(45)
- <iOS读书笔记>之Effective Objective-C 2.0
- iOS之《Effective Objective-C 2.0》读书笔记(1)
- iOS之《Effective Objective-C 2.0》读书笔记(2)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS之《Effective Objective-C 2.0》读书笔记(4)
- iOS之《Effective Objective-C 2.0》读书笔记(5)
- iOS之《Effective Objective-C 2.0》读书笔记(6)
- iOS之《Effective Objective-C 2.0》读书笔记(7)
- iOS之《Effective Objective-C 2.0》读书笔记(8)
- iOS之《Effective Objective-C 2.0》读书笔记(9)
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- iOS之《Effective Objective-C 2.0》读书笔记(11)
- iOS之《Effective Objective-C 2.0》读书笔记(12)
- iOS之《Effective Objective-C 2.0》读书笔记(13)
- iOS之《Effective Objective-C 2.0》读书笔记(14)
- iOS之《Effective Objective-C 2.0》读书笔记(16)
- iOS之《Effective Objective-C 2.0》读书笔记(17)
- rabbitmq笔记 与 springcloudstream的交互
- 数组重排(贪心)
- null和""的区别
- 阿里云推荐引擎使用教程
- 批量导入功能实现
- iOS之《Effective Objective-C 2.0》读书笔记(45)
- web 基础
- (六)JavaScript关于浏览器-promise和canvas
- 作业
- spring 和 mybatis 整合过程 (包含分页)
- Android手机获取权限问题
- Windows平台OGG单向数据同步笔记(一)
- Android Studio学习基础篇三
- Spark机器学习笔记(2)--构建基于Spark的推荐引擎