实现单例的几个关键点:
- 懒加载
- 线层安全
- 编译器指令重排优化
- 可继承,方法可override
Objective-C中的单例写法:
@implementation MyObject + (instancetype)sharedInstance { static MyObject *instance; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [[MyObject alloc] init]; }); return instance; } @end
dispatch_once的底层实现
dispatch_once的底层实现其实并不复杂:
Void
dispatch_one(dispatch_once_t *va, dispatch_block_t blockl{
})