iOS之《Effective Objective-C 2.0》读书笔记(45)
2017-09-12 15:51
363 查看
第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中的有此功能
相关文章推荐
- 《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》--读书笔记
- 编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记
- <<Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法>>读书笔记之objc_msgSend
- iOS之《Effective Objective-C 2.0》读书笔记(50)
- iOS之《Effective Objective-C 2.0》读书笔记(46)
- 《Effective Objective C 2.0 编写高质量iOS与OS X代码的52个有效方法》读书笔记
- iOS之《Effective Objective-C 2.0》读书笔记(10)
- 《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(下)
- 《Effective Objective-C 2.0编写高质量iOS与OS X代码的52个有效方法》读书笔记(上)
- iOS之《Effective Objective-C 2.0》读书笔记(1)
- iOS之《Effective Objective-C 2.0》读书笔记(6)
- iOS之《Effective Objective-C 2.0》读书笔记(42)
- iOS之《Effective Objective-C 2.0》读书笔记(49)
- iOS之《Effective Objective-C 2.0》读书笔记(3)
- iOS之《Effective Objective-C 2.0》读书笔记(5)
- iOS之《Effective Objective-C 2.0》读书笔记(7)
- iOS之《Effective Objective-C 2.0》读书笔记(21)
- iOS之《Effective Objective-C 2.0》读书笔记(48)
- iOS-Effective Objective-C 2.0 读书笔记(二)
- iOS之《Effective Objective-C 2.0》读书笔记(4)